jQuery Object数组表示法

Jar*_*der 8 jquery jquery-selectors

我是jQuery的新手,我在理解对象的数组符号时遇到了一些麻烦.阅读jQuery文档和本文,似乎你可以通过做类似的事情来引用选择器返回的对象中的第n项

$('.foo')[n];
Run Code Online (Sandbox Code Playgroud)

正确?我应该能够串联使用jQuery操作/效果函数吗?有点像(这对我不起作用)

$('.foo')[0].hide();
Run Code Online (Sandbox Code Playgroud)

我也试过,但没有用:

var arr = $('.foo').get();
arr[0].hide();
Run Code Online (Sandbox Code Playgroud)

我的语法有问题吗?做我想做的最好的方法是什么?

谢谢!

nnn*_*nnn 18

[0]数组符号和.get()方法都返回一个参照本发明的DOM元素jQuery对象内,并且不能使用上DOM元素jQuery方法.

请尝试使用该eq()方法,因为它返回一个新的jQuery对象:

$('.foo').eq(0).hide();
Run Code Online (Sandbox Code Playgroud)

另请注意,使用数组表示法或.get()获取对DOM元素的引用意味着您可以直接访问DOM元素的属性,例如:

var firstElId = $('.foo')[0].id;
Run Code Online (Sandbox Code Playgroud)

... 如果没有与选择器匹配的元素,$('.foo')[0]则会有第二个音符,undefined并且$('.foo')[0].id会给出错误'.foo'.


Tho*_*ham 6

当您将jQuery对象作为数组引用时,您将获得一个DOM元素.您需要将其转换回jQuery对象以使用.hide()等方法

var bar = $('.foo')[n];
var $bar = $(bar);

$bar.hide();
Run Code Online (Sandbox Code Playgroud)

或者只使用jQuery的eq()方法:

var bar = $('.foo').eq(n);
bar.hide();
Run Code Online (Sandbox Code Playgroud)