jQuery的:eq()vs get()


98

我是jQuery的新手,我想知道jQuery get()eq()函数之间的区别是什么。我可能会误解该get()函数的功能,但是奇怪的是,我无法在同一行中的返回元素上对返回的函数进行调用。

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

//Works
$("h2").eq(0).fadeIn("slow");


Answers:


194

.get().eq()两个返回从一个jQuery对象阵列中的单个“元件”,但它们返回以不同的形式的单个元件。

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

.get()返回原始DOM元素的数组。您可以像访问原始DOM元素一样,通过访问它们的属性并调用其功能来操纵它们。但是它失去了作为jQuery包装对象的身份,因此类似jQuery的功能.fadeIn将无法使用。


8
.get()返回一个数组,.get(index)返回该数组索引处的单个元素。
Mohamed Fasil 2014年


12

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

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

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


6

以其他答案为基础:

$('h2').get(0) === $('h2').eq(0)[0]  //true
$( $('h2').get(0) ) === $('h2').eq(0)  //true

1
第一个是正确的。第二个对象不是。那两个对象不相同
Royi Namir

5

eq(i)检索接收者集中的第i个成员作为jQuery对象,而get(i)将位于第i个位置的成员作为DOM元素返回。

这不起作用的原因:

$("h2").get(0).fadeIn("slow");

是因为h2DOM元素没有称为fadeIn

您应该eq(0)在这里使用。


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方法


0

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.

资料来源:http : //www.snoopcode.com/JQuery/jquery-eq-selector


“找到第二个div” =>不eq(2)返回第三个div?
xhienne

0

上面的答案已经具体而正确地解释了。我想在这里添加一些点,可能对的使用有所帮助get()

  1. 如果您不向传递参数.get(),它将返回DOM元素数组。

  2. 如果您使用来获得DOM对象get(),例如 var s = $("#id").get(0) 只需将其转换为jQuery对象,$(s)

  3. $obj[i]如果您不想使用$obj.get(i),可以使用另一种方法,请参见下文,

    var $obj = $("#ul li");
    var obj1 = $obj.get(1);
    var obj2 = $obj[1];
    
    //true
    return obj2===obj1;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.