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() 失败

http://api.jquery.com/get/

说明:检索由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()

  1. 如果不传递参数给.get() ,它将返回一个DOM元素的数组。

  2. 如果你有一个使用get()的DOM对象,就像var s = $("#id").get(0)你可以简单地使用这个$(s)

  3. 如果您不想使用$obj.get(i) ,可以使用$obj[i]作为替代方法,

     var $obj = $("#ul li"); var obj1 = $obj.get(1); var obj2 = $obj[1]; //true return obj2===obj1;