jQuery:eq()vs get()
我是jQuery的新手,我想知道jQuery的get()
和eq()
函数有什么区别。 我可能会误解get()
函数做什么,但我觉得奇怪,我不能在同一行返回的元素上返回一个函数。
//Doesn't work Ie $("h2").get(0).fadeIn("slow"); //Works $("h2").eq(0).fadeIn("slow");
.get()
和.eq()
都从jQuery对象数组中返回一个“元素”,但它们以不同的forms返回单个元素。
.eq()
将它作为一个jQuery对象返回,这意味着DOM元素被包装在jQuery包装器中,这意味着它接受jQuery函数。
.get()
返回一个原始DOM元素的数组。 您可以像访问原始DOM元素一样访问其属性并调用其function。 但是它失去了作为jQuery包装对象的身份,所以像.fadeIn
这样的jQuery函数将不起作用。
get()
返回一个DOM元素,而:eq()
和eq()
返回一个jQuery元素。 由于DOM元素没有方法fadeIn()
失败 。
说明:检索由jQuery对象匹配的DOM元素。
http://api.jquery.com/eq-selector/
说明:select匹配集内索引n处的元素。
get(0)
(docs)返回集合中的第一个DOM元素。
eq(0)
(docs)返回集合中的第一个DOM元素,包装在一个jQuery对象中。
这就是为什么.fadeIn("slow");
当您执行.get(0)
时不起作用。 一个DOM元素没有fadeIn()
方法,但是一个jQuery对象没有。
build立在其他答案:
$('h2').get(0) === $('h2').eq(0)[0] //true $( $('h2').get(0) ) === $('h2').eq(0) //true
eq(i)
检索接收者集合中的第i个成员作为jQuery
对象,而get(i)
返回第i个成员作为DOM元素。
之所以这不起作用:
$("h2").get(0).fadeIn("slow");
是因为h2
DOM元素没有一个叫做fadeIn
的方法。
您应该在这里使用eq(0)
。
我举了一个例子来解释其他人给出的观点。 考虑下面的代码
<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方法
jQuery eq()方法select一个具有特定索引号的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.
来源: http : //www.snoopcode.com/JQuery/jquery-eq-selector
上面的答案已经具体和正确地解释。 我想在这里添加几个可能有助于使用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;