jQuery:eq() 与 get()
我是 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
.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.get()
返回 DOM 元素,而:eq()
和eq()
返回 jQuery 元素。由于 DOM 元素没有方法fadeIn()
,因此它失败。http://api.jquery.com/get/
http://api.jquery.com/eq-selector/
get()
returns a DOM element whereas:eq()
andeq()
return a jQuery element. Since DOM elements have no methodfadeIn()
it fails.http://api.jquery.com/get/
http://api.jquery.com/eq-selector/
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 afadeIn()
method, but a jQuery object does.以其他答案为基础:
To build on the other answers:
eq(i)
将接收者集合中的第 i 个成员检索为 < code>jQuery 对象,而get(i)
返回作为 DOM 元素的第 i 个位置的成员。这不起作用的原因
是:因为
h2
DOM 元素没有名为fadeIn
的方法。您应该在此处使用
eq(0)
。eq(i)
retrieves the ith member in the receiver's set as ajQuery
object, whileget(i)
returns the member at the ith position as a DOM element.The reason why this doesn't work:
Is because the
h2
DOM element doesn't have a method calledfadeIn
.You should use
eq(0)
here instead.我举一个例子来解释其他人在这里给出的观点。
考虑以下代码
和相应的 js 代码,
这就是您将看到的
第一个是 DOM 对象,而后者是一个 Jquery 包装的对象,您可以在其中调用 Jquery 方法
I am giving an example that explains the points given by others here.
consider the following code
and the corresponding js code,
This is what you will see
The first is a DOM object while the latter is a Jquery-wrapped object where you could call Jquery methods
jQuery eq() 方法选择具有特定索引号的 HTML 元素。
以下是该来源的示例
: 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
Source: http://www.snoopcode.com/JQuery/jquery-eq-selector
上面的答案已经解释得具体且正确。我想在这里添加几点可能有助于
get()
的使用。如果您不将参数传递给
.get()
,它将返回 DOM 元素的数组。如果您使用
get()
获得了 DOM 对象,例如var s = $("#id").get(0)
你可以简单地通过使用
$(s)
将它转回 jQuery 对象,
如果您不这样做,您可以使用
$obj[i]
作为替代方法'不想使用$obj.get(i)
,见下文,Answers above have explained specificly and correctly. I want to add a few points here that might help for the use of
get()
.If you don't pass an argument to
.get()
, it will return an Array of the DOM elements.If you got a DOM object using
get()
, likevar s = $("#id").get(0)
you can turn it back into jQuery object simply by using this,
$(s)
You can use
$obj[i]
as an alternative way if you don't want to use$obj.get(i)
, see below,