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

时间:2009-03-20 18:42:33

标签: jquery

我发现自己开始写这个:

$($("a-selector-which-returns-multiple-objects")[index]).SomejQueryFunctionForExampleShow()

因为我有一个返回多个对象的查询,所以[index]运算符返回DOM对象,而不是jQuery对象,因此我将其转换回外部$()的jQuery对象。 / p>

这很好用,但看起来不够优雅,而且我觉得我错过了关于索引到jQuery对象集的一些东西 - 这样做的正确方法是什么?

4 个答案:

答案 0 :(得分:10)

在您描述的情况下,您根本不必索引元素。由于JQuery链接其命令的方式,任何命令都将在 all 上运行上一个选择器返回的元素。

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

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

如果需要是特定元素,您应该为其选择一个唯一ID:

$(document).ready(function() {
    $("#my-unique-id").hide();
});

如果要将特定索引作为JQuery对象返回,则应使用eq function

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

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

答案 1 :(得分:2)

JQuery为此目的提供Traversing/eqTraversing/slice等功能,以及其他类似Traversing/filter的功能,用于更复杂的情况。

$("selector").eq(0).show();

答案 2 :(得分:0)

如果你想在某些对象上执行SomejQueryFunctionForExampleShow(),为什么索引只是这样做:

$("a-selector-which-returns-multiple-objects").SomejQueryFunctionForExampleShow().

答案 3 :(得分:0)

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