jQuery:eq() 与 get()

发布于 2024-10-12 07:43:54 字数 249 浏览 2 评论 0原文

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

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

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

I'm new to jQuery, and I'm wondering what the difference is between jQuery's get() and eq() functions. I may misunderstand what the get() function does, but I thought it odd that I couldn't call a function on the returned on the returned element in the same line.

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

倒带 2024-10-19 07:43:54

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

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

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

.get() and .eq() both return a single "element" from a jQuery object array, but they return the single element in different forms.

.eq() returns it as a jQuery object, meaning the DOM element is wrapped in the jQuery wrapper, which means that it accepts jQuery functions.

.get() returns an array of raw DOM elements. You may manipulate each of them by accessing its attributes and invoking its functions as you would on a raw DOM element. But it loses its identity as a jQuery-wrapped object, so a jQuery function like .fadeIn won't work.

南街女流氓 2024-10-19 07:43:54

get() 返回 DOM 元素,而 :eq()eq() 返回 jQuery 元素。由于 DOM 元素没有方法 fadeIn(),因此它失败

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

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

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

描述:选择匹配集中索引为 n 的元素。

get() returns a DOM element whereas :eq() and eq() return a jQuery element. Since DOM elements have no method fadeIn() it fails.

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

Description: Retrieve the DOM elements matched by the jQuery object.

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

Description: Select the element at index n within the matched set.

七婞 2024-10-19 07:43:54

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

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

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

get(0)(docs) returns the first DOM element in the set.

eq(0)(docs) returns the first DOM element in the set, wrapped in a jQuery object.

That's why .fadeIn("slow"); doesn't work when you do .get(0). A DOM element doesn't have a fadeIn() method, but a jQuery object does.

一笑百媚生 2024-10-19 07:43:54

以其他答案为基础:

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

To build on the other answers:

$('h2').get(0) === $('h2').eq(0)[0]  //true
$( $('h2').get(0) ) === $('h2').eq(0)  //true
后来的我们 2024-10-19 07:43:54

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

这不起作用的原因

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

是:因为 h2 DOM 元素没有名为 fadeIn 的方法。

您应该在此处使用 eq(0)

eq(i) retrieves the ith member in the receiver's set as a jQuery object, while get(i) returns the member at the ith position as a DOM element.

The reason why this doesn't work:

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

Is because the h2 DOM element doesn't have a method called fadeIn.

You should use eq(0) here instead.

躲猫猫 2024-10-19 07:43:54

我举一个例子来解释其他人在这里给出的观点。
考虑以下代码

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

I am giving an example that explains the points given by others here.
consider the following code

<div id="example">
    Some text
    <div>Another div</div>
    <!--A comment-->
</div>

and the corresponding js code,

$(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);
    });

This is what you will see

 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]

The first is a DOM object while the latter is a Jquery-wrapped object where you could call Jquery methods

落日海湾 2024-10-19 07:43:54

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-选择器

jQuery eq() method selects a HTML element with a specific index number.

Here is an example of that

<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.

Source: http://www.snoopcode.com/JQuery/jquery-eq-selector

丿*梦醉红颜 2024-10-19 07:43:54

上面的答案已经解释得具体且正确。我想在这里添加几点可能有助于 get() 的使用。

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

  2. 如果您使用 get() 获得了 DOM 对象,例如
    var s = $("#id").get(0)
    你可以简单地通过使用 $(s)

    将它转回 jQuery 对象,

  3. 如果您不这样做,您可以使用 $obj[i] 作为替代方法'不想使用 $obj.get(i),见下文,

    var $obj = $("#ul li");
    var obj1 = $obj.get(1);
    var obj2 = $obj[1];
    
    //真的
    返回 obj2===obj1;
    

Answers above have explained specificly and correctly. I want to add a few points here that might help for the use of get().

  1. If you don't pass an argument to .get(), it will return an Array of the DOM elements.

  2. If you got a DOM object using get(), like
    var s = $("#id").get(0)
    you can turn it back into jQuery object simply by using this, $(s)

  3. You can use $obj[i] as an alternative way if you don't want to use $obj.get(i), see below,

    var $obj = $("#ul li");
    var obj1 = $obj.get(1);
    var obj2 = $obj[1];
    
    //true
    return obj2===obj1;
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文