【发布时间】:2011-06-10 05:27:54
【问题描述】:
我是 jQuery 新手,我想知道 jQuery 的 get() 和 eq() 函数之间有什么区别。我可能会误解 get() 函数的作用,但我觉得奇怪的是,我不能在同一行的返回元素上调用返回的函数。
//Doesn't work
I.e. $("h2").get(0).fadeIn("slow");
//Works
$("h2").eq(0).fadeIn("slow");
【问题讨论】:
我是 jQuery 新手,我想知道 jQuery 的 get() 和 eq() 函数之间有什么区别。我可能会误解 get() 函数的作用,但我觉得奇怪的是,我不能在同一行的返回元素上调用返回的函数。
//Doesn't work
I.e. $("h2").get(0).fadeIn("slow");
//Works
$("h2").eq(0).fadeIn("slow");
【问题讨论】:
上面的答案已经具体正确地解释了。我想在这里补充几点可能有助于get()的使用。
如果您不将参数传递给 .get(),它将返回一个 DOM 元素的数组。
如果你有一个使用 get() 的 DOM 对象,比如
var s = $("#id").get(0)
你可以简单地用这个$(s)
如果您不想使用$obj.get(i),可以使用$obj[i] 作为替代方式,见下文,
var $obj = $("#ul li");
var obj1 = $obj.get(1);
var obj2 = $obj[1];
//true
return obj2===obj1;
【讨论】:
jQuery eq() 方法选择具有特定索引号的 HTML 元素。
这是一个例子
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
$( "body" ).find( "div" ).eq( 2 ).addClass( "red" );
// it finds the second div in the html body and change it to red color.
【讨论】:
eq(2) 不返回第三个 div?
get() 返回一个 DOM 元素,而 :eq() 和 eq() 返回一个 jQuery 元素。由于 DOM 元素没有方法 fadeIn() 它失败。
说明: 检索 jQuery 对象匹配的 DOM 元素。
http://api.jquery.com/eq-selector/
说明:在匹配集中选择索引n处的元素。
【讨论】:
我举一个例子来解释其他人在这里给出的观点。 考虑以下代码
<div id="example">
Some text
<div>Another div</div>
<!--A comment-->
</div>
以及对应的js代码,
$(document).ready(function() {
var div = $("#example").get(0);
console.log(typeof(div));
console.log(div);
console.log("XXXXXXXXX");
var div_eq=$('#example').eq(0);
console.log(typeof(div_eq));
console.log(div_eq);
});
这就是你将看到的
object
excercise1.js (line 5)
<div id="example">
excercise1.js (line 6)
XXXXXXXXX
excercise1.js (line 7)
object
excercise1.js (line 9)
Object[div#example]
第一个是 DOM 对象,而后者是 Jquery 包装的对象,您可以在其中调用 Jquery 方法
【讨论】:
以其他答案为基础:
$('h2').get(0) === $('h2').eq(0)[0] //true
$( $('h2').get(0) ) === $('h2').eq(0) //true
【讨论】:
get(0)(docs) 返回集合中的第一个 DOM 元素。
eq(0)(docs) 返回集合中的第一个 DOM 元素,包装在一个 jQuery 对象中。
这就是为什么 .fadeIn("slow"); 在您执行 .get(0) 时不起作用的原因。 DOM 元素没有 fadeIn() 方法,但 jQuery 对象有。
【讨论】: