什么$('.element'); 回报?

Ram*_*son 0 javascript jquery jquery-ui

一些消息来源说:

var objectA = jQuery('.someClass'); // returns new instance of jQuery object.
Run Code Online (Sandbox Code Playgroud)

有人说:

var objectA = jQuery('.someClass'); // returns an array of elements with class='someClass'.
Run Code Online (Sandbox Code Playgroud)

如果上面的语句返回一个jQuery对象,那么objectA如何表现为数组?谢谢.

Amm*_*CSE 5

objectA在某种意义上它表现为一个数组,它可以被索引迭代和访问.它是一个元素的集合.someClass.因此,objectA阵列式的

var objectA = jQuery('.someClass');

var first = objectA[0];//first element with someClass

objectA.each(function(){
   //do something with each element that has someClass
});
Run Code Online (Sandbox Code Playgroud)

但是,objectA不是纯粹的js数组.因此,它无法访问Array.prototype方法.为了能够访问这些方法,您需要使用toArray()之类的

var realArray = objectA.toArray();
realArray.reverse();//now you can use Array.protype methods like reverse()
Run Code Online (Sandbox Code Playgroud)

最后,应该注意的是,当您使用时toArray,数组中的每个项目都是a DOM element而不再是jQuery对象.这可以通过将其包装成$(...)类似物来克服

$(realArray[0])
Run Code Online (Sandbox Code Playgroud)

  • 请注意,当您使用`toArray()`时,数组中的每个结果项都是DOM元素,而不再是jQuery对象. (3认同)