如何优雅地索引jQuery对象的数组?

4
我发现自己开始写下这句话:
$($("a-selector-which-returns-multiple-objects")[index]).SomejQueryFunctionForExampleShow()

因为我的一个查询返回多个对象,所以 [index] 运算符返回 DOM 对象,而不是 jQuery 对象,因此我使用外部的 $() 将其转换回 jQuery 对象。
这种方法可以正常工作,但似乎不够优雅,我感觉自己在处理 jQuery 对象集合的索引时缺少某些知识 - 请问有更好的方法吗?
4个回答

10

在您所描述的情况下,您不需要对元素进行索引。由于JQuery链式命令的方式,任何在先前选择器返回的所有元素上运行的命令都将被执行。

以下示例将隐藏所有<a>元素:

$(document).ready(function() {
    $("a").hide();
});

如果需要选择特定的元素,您应该为其分配一个唯一的ID进行选择:
$(document).ready(function() {
    $("#my-unique-id").hide();
});

如果您想将特定的索引作为JQuery对象返回,您应该使用eq函数
$(document).ready(function() {
    $("a").eq(0).hide();
});

但是在你的情况下,你根本不需要索引。


1
谢谢 - eq() 是我想要的。索引是最简单的方法,因为这是作为循环的一部分调用的,该循环正在测试从硬件返回的位掩码。 - Will Dean
我认为你可以使用 .each(function(i) { ... }); 来实现。 - Soviut

2

0
如果您想在某些对象上执行SomejQueryFunctionForExampleShow(),为什么不直接使用索引呢?
$("a-selector-which-returns-multiple-objects").SomejQueryFunctionForExampleShow().

我的[index]的重点在于我只想影响多个对象中的一个成员。 - Will Dean

0
你可以使用filter命令来过滤原始的包装集,然后在子集上执行命令(然后使用end命令返回到原始的包装集)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接