代码之家  ›  专栏  ›  技术社区  ›  Will Dean

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

  •  4
  • Will Dean  · 技术社区  · 15 年前

    我发现自己开始写:

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

    因为我有一个返回多个对象的查询,然后 [index] 运算符返回dom对象,而不是jquery对象,因此我将其转换回外部 $() .

    这很好,但是看起来不太好,而且我觉得我缺少了一些关于索引到jquery对象集的内容——正确的方法是什么?

    4 回复  |  直到 12 年前
        1
  •  10
  •   Soviut    15 年前

    在描述的情况下,根本不需要索引元素。因为jquery链接其命令的方式,所以您将运行的任何命令 全部的 上一个选择器返回的元素。

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

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

    如果它需要一个特定的元素,您应该给它一个唯一的ID来选择:

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

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

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

    但是,在您的情况下,您完全不需要索引。

        2
  •  2
  •   Alex Barrett    15 年前

    jquery提供以下功能: Traversing/eq Traversing/slice 为了这个目的,以及其他像 Traversing/filter 对于更复杂的情况。

    $("selector").eq(0).show();
    
        3
  •  0
  •   Soviut    15 年前

    如果要对某些对象执行somejQueryFunctionForExampleShow(),则说明索引只执行以下操作:

    $("a-selector-which-returns-multiple-objects").SomejQueryFunctionForExampleShow().
    
        4
  •  0
  •   Russ Cam    15 年前

    你可以用 filter command 过滤原始包装集,然后对子集执行命令(然后返回到原始包装集 end command )