我是jQuery的新手,我想知道jQuery的get()
和eq()
函数之间有什么区别。我可能会误解get()
函数的作用,但我觉得奇怪的是我无法在同一行中返回的元素上返回一个函数。
//Doesn't work
I.e. $("h2").get(0).fadeIn("slow");
//Works
$("h2").eq(0).fadeIn("slow");
答案 0 :(得分:184)
.get()
和.eq()
都返回jQuery对象数组中的单个“元素”,但它们以不同的形式返回单个元素。
.eq()
将其作为jQuery对象返回,这意味着DOM元素包装在jQuery包装器中,这意味着它接受jQuery函数。
.get()
返回一个原始DOM元素数组。您可以通过访问其属性并像调用原始DOM元素一样调用其函数来操作它们。但它失去了作为jQuery包装对象的身份,因此像.fadeIn
这样的jQuery函数将无效。
答案 1 :(得分:16)
get()
返回一个DOM元素,而:eq()
和eq()
返回一个jQuery元素。由于DOM元素没有方法fadeIn()
,因此失败。
描述:检索与jQuery对象匹配的DOM元素。
http://api.jquery.com/eq-selector/
说明:在匹配的集合中选择索引n处的元素。
答案 2 :(得分:12)
get(0)
(docs)返回集合中的第一个DOM元素。
eq(0)
(docs)返回集合中的第一个DOM元素,包装在jQuery对象中。
这就是.fadeIn("slow");
执行.get(0)
时无效的原因。 DOM元素没有fadeIn()
方法,但jQuery对象没有。
答案 3 :(得分:6)
以其他答案为基础:
$('h2').get(0) === $('h2').eq(0)[0] //true
$( $('h2').get(0) ) === $('h2').eq(0) //true
答案 4 :(得分:5)
eq(i)
将接收者集合中的第i个成员检索为jQuery
个对象,而get(i)
将第i个位置的成员作为DOM元素返回。
这不起作用的原因:
$("h2").get(0).fadeIn("slow");
是因为h2
DOM元素没有名为fadeIn
的方法。
您应该在此使用eq(0)
。
答案 5 :(得分: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方法
答案 6 :(得分: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.
答案 7 :(得分:0)
上面的答案已经具体而正确地解释了。我想在这里添加一些可能有助于get()
使用的点。
如果你没有将参数传递给.get()
,它将返回一个DOM元素数组。
如果你使用get()
得到一个DOM对象,就像
var s = $("#id").get(0)
您只需使用此$(s)
如果您不想使用$obj[i]
,可以使用$obj.get(i)
作为替代方式,请参阅下文,
var $obj = $("#ul li");
var obj1 = $obj.get(1);
var obj2 = $obj[1];
//true
return obj2===obj1;