3

所有这些方式有什么区别?

//1
$('div').eq(index) 

//2
$('div')[index] 

//3
$($('div')[index] )

//4
$('div').get(1)

他们是一样的吗?

截屏

4

4 回答 4

6

不。

一个第三个返回 jQuery 对象,而第二个第四个返回 DOM 元素:

$("div").eq(index) === $($("div")[index]);  // --> jQuery object

$("div")[index] === $("div").get(index);    // --> DOM element

你可以在这里阅读最后一个案例:http: //api.jquery.com/get/

如果您需要查看类型之间的差异,您可以尝试在控制台中运行以下命令:

Object.prototype.toString.call($("div").eq(index)); // "[object Object]"
Object.prototype.toString.call($("div")[index]);    // "[object HTMLDivElement]"
于 2012-12-07T11:45:49.160 回答
3

First and third会让你jQuery反对,第二个会给你DOM反对。

  1. $('div').eq(index) // 将返回 jquery 对象

  2. $('div')[index] // 会给你 javascript DOM 对象

  3. $($('div')[index]) //将通过转换DOM对象给你jQuery对象

您需要不同的语法来获取对象的实例id的属性。

idofobject = $('div').eq(index).attr('id') //jQuery

idofobject = $('div')[index].id            //javascript
于 2012-12-07T11:45:54.203 回答
2

$('div').eq(index) 这将返回一个 JQuery 对象

$('div')[index] 这会给你javascript对象

于 2012-12-07T11:47:09.583 回答
1
  • v1 $('div').eq(index)::: 返回一个包含一个 div 的 jQuery 包装的集合。

  • v2 $('div')[index]::: 返回对 DOM 元素的引用(不是 jQuery 包装的)

  • v3 $($('div')[index])::: 返回一个包含一个 div 的 jQuery 包装的集合。这是 v1 的冗长且低效的版本。

你没有问$('div').get(index),这是实现 v2.2 的另一种方式。AFAIK,它的效率并没有大大降低。

于 2012-12-07T11:56:58.857 回答