jQuery:eq()vs get()

con*_*att 96 jquery jquery-selectors

我是jQuery的新手,我想知道jQuery get()eq()函数之间的区别.我可能会误解get()函数的作用,但我觉得奇怪的是我无法在同一行中返回的元素上返回一个函数.

//Doesn't work
I.e.  $("h2").get(0).fadeIn("slow");

//Works
$("h2").eq(0).fadeIn("slow");
Run Code Online (Sandbox Code Playgroud)

Ste*_*ven 191

.get()并且.eq()它们都从jQuery对象数组返回单个"元素",但它们以不同的形式返回单个元素.

.eq() 将它作为jQuery对象返回,这意味着DOM元素包装在jQuery包装器中,这意味着它接受jQuery函数.

.get()返回原始DOM元素的数组.您可以通过访问其属性并像调用原始DOM元素一样调用其函数来操作它们.但它失去了作为jQuery包装对象的身份,所以jQuery函数.fadeIn就不起作用了.

  • .get()返回一个数组,.get(index)返回数组索引处的单个元素. (7认同)

hun*_*ter 16

get()返回一个DOM元素,:eq()然后eq()返回一个jQuery元素.由于DOM元素没有方法,fadeIn()因此失败.

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

描述:检索jQuery对象匹配的DOM元素.

http://api.jquery.com/eq-selector/

描述:选择匹配集中索引n处的元素.


use*_*716 12

get(0)(docs) 返回集合中的第一个DOM元素.

eq(0)(docs) 返回集合中的第一个DOM元素,包装在jQuery对象中.

这就是为什么.fadeIn("slow");当你这样做时不起作用的原因.get(0).DOM元素没有fadeIn()方法,但jQuery对象有.


qwe*_*ymk 6

建立其他答案:

$('h2').get(0) === $('h2').eq(0)[0]  //true
$( $('h2').get(0) ) === $('h2').eq(0)  //true
Run Code Online (Sandbox Code Playgroud)

  • 第一个是正确的。第二个不是。这两个对象不一样 (2认同)

Jac*_*kin 5

eq(i)检索接收者集合中的第i个成员作为jQuery对象,同时get(i)返回第i个位置的成员作为DOM元素.

这不起作用的原因:

$("h2").get(0).fadeIn("slow");
Run Code Online (Sandbox Code Playgroud)

是因为h2DOM元素没有调用的方法fadeIn.

你应该eq(0)在这里使用.