我是jQuery的新手,我想知道jQuery get()
和eq()
函数之间的区别是什么。我可能会误解该get()
函数的功能,但是奇怪的是,我无法在同一行中的返回元素上对返回的函数进行调用。
//Doesn't work
I.e. $("h2").get(0).fadeIn("slow");
//Works
$("h2").eq(0).fadeIn("slow");
我是jQuery的新手,我想知道jQuery get()
和eq()
函数之间的区别是什么。我可能会误解该get()
函数的功能,但是奇怪的是,我无法在同一行中的返回元素上对返回的函数进行调用。
//Doesn't work
I.e. $("h2").get(0).fadeIn("slow");
//Works
$("h2").eq(0).fadeIn("slow");
Answers:
.get()
和.eq()
两个返回从一个jQuery对象阵列中的单个“元件”,但它们返回以不同的形式的单个元件。
.eq()
将其作为jQuery对象返回,这意味着DOM元素包装在jQuery包装器中,这意味着它接受jQuery函数。
.get()
返回原始DOM元素的数组。您可以像访问原始DOM元素一样,通过访问它们的属性并调用其功能来操纵它们。但是它失去了作为jQuery包装对象的身份,因此类似jQuery的功能.fadeIn
将无法使用。
get()
返回一个DOM元素,而:eq()
并eq()
返回一个jQuery元素。由于DOM元素没有方法,fadeIn()
因此失败。
说明:检索与jQuery对象匹配的DOM元素。
http://api.jquery.com/eq-selector/
说明:选择匹配集中索引n处的元素。
get(0)
(docs) 返回集合中的第一个DOM元素。
eq(0)
(文档) 返回集合中的第一个DOM元素,包装在jQuery对象中。
这就是为什么.fadeIn("slow");
当您这样做时不起作用.get(0)
。DOM元素没有fadeIn()
方法,但是jQuery对象有方法。
以其他答案为基础:
$('h2').get(0) === $('h2').eq(0)[0] //true
$( $('h2').get(0) ) === $('h2').eq(0) //true
我举一个例子,解释其他人在这里提出的观点。考虑以下代码
<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()方法选择具有特定索引号的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.
eq(2)
返回第三个div?