在尝试更好地理解JQuery
时,我遇到了这个question
我从中获得的是JQuery
选择器返回一个类似于数组的结构,您可以像数组一样迭代。我的问题是在什么情况下我可以做这样的事情:
$('.foo')[1].someFunction();
不会导致错误:$(...)[1].someFunction is not a function
(someFunction
引用定义的JQuery
函数,例如appendTo()
或text()
。
另外,为什么它会导致错误,并且在使用[]
表示法后使用链接函数的最佳方法(如果可能)?
答案 0 :(得分:3)
在什么情况下我可以这样做:
$('.foo')[1].someFunction();
无条件下。 “数组”中的对象是本机DOM对象,它们不支持jQuery函数。
答案 1 :(得分:2)
您可以执行类似$('.foo').first()
或$('.foo').eq(1)
的操作,这是访问jQuery选择器结果的更惯用的方法。
正如@Amit指出的那样,底层数组结构中的对象是本机DOM元素。在jQuery方法链中使用它们的一种愚蠢但也许是有启发性的方法是$($('.foo')[1]).whatever()
在评论中提到的问题,本机DOM元素有自己的(相当大的)方法集可以在它们上面调用。例如,所有HTML元素都有this very much worth knowing interface可用,并且每种特定类型的元素都有自己的扩展名。
答案 2 :(得分:1)
使用数组选择器访问jQuery对象时,将返回DOM元素。因为它不再是jQuery对象,所以它将不再能访问jQuery的方法和属性。
您可以尝试使用类似$('.foo').eq(1)
的内容,然后将jQuery方法链接起来。