链接返回JQuery对象的方法

时间:2016-05-20 17:57:51

标签: jquery

在尝试更好地理解JQuery时,我遇到了这个question

我从中获得的是JQuery选择器返回一个类似于数组的结构,您可以像数组一样迭代。我的问题是在什么情况下我可以做这样的事情:

  $('.foo')[1].someFunction();

不会导致错误:$(...)[1].someFunction is not a functionsomeFunction引用定义的JQuery函数,例如appendTo()text()

另外,为什么它会导致错误,并且在使用[]表示法后使用链接函数的最佳方法(如果可能)?

3 个答案:

答案 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方法链接起来。