如何使用jquery获取元素并存储在数组中以供以后使用?

如何使用jquery获取元素并存储在数组中以供以后使用?,jquery,arrays,Jquery,Arrays,我正在尝试收集一组特定的元素,以便稍后在循环中使用。但是,我似乎没有正确的语法:调试控制台告诉我我的对象未定义。有人能告诉我我做错了什么吗 var all_help_triggers = []; $(".canned-triggers > li").each(function() { all_help_triggers.push($(this)) }); all_help_triggers[0].click(function(){alert('hi!');}) 您可以简单地执行以下操作:

我正在尝试收集一组特定的
  • 元素,以便稍后在循环中使用。但是,我似乎没有正确的语法:调试控制台告诉我我的对象未定义。有人能告诉我我做错了什么吗

    var all_help_triggers = [];
    $(".canned-triggers > li").each(function() { all_help_triggers.push($(this)) });
    all_help_triggers[0].click(function(){alert('hi!');})
    

    您可以简单地执行以下操作:

    // save selected jQuery objects into variable
    var all_help_triggers = $(".canned-triggers > li");
    
    // get first element in jQuery object, and assign a click handler
    all_help_triggers.eq(0).click(function(){
        alert('hi!');
    });
    
    编辑(根据附加注释):

    要获取索引,请使用

    如果你想在页面加载时隐藏一个列表,你应该在CSS中隐藏它。而不是:

    $('.canned-content > li').hide();
    
    删除该行并添加此CSS:

    .canned-content > li { display: none; }
    
    使用each()时,“this”值指的是它迭代的“每个”元素。因此,您应该尝试这样的方法,而不是使用额外的数组

    $(".canned-triggers > li").each(function() { 
        $(this).click(function( {
           alert('hi!')
        });
    });
    
    刚刚注意到你的评论:

    参见小提琴示例:

      heyo1 heyo2 heyo3
    • 我是heyo content 1
    • 我是heyo content 2
    • 我是heyo内容3
    $('.canned content>li').hide(); $('.cavented triggers>li')。单击(函数(){ var-toggleElement=$(this.data(“元素”); $(toggleElement.show(); });
    您应该检查选择器是否返回任何内容

    另外,jQuery集合类似于数组,这意味着您不需要显式地将其转换为数组。。。您可以使用
    for
    循环通过它,而不会出现任何问题

    但是,如果仍然需要JavaScript数组,可以使用以下代码:

    var all_help_triggers = $.makeArray( $(".canned-triggers > li") );
    

    更多关于
    $的文档。makeArray
    方法在这里似乎工作正常::修复-谢谢!:)复制粘贴问题:)这很好。不幸的是,当我希望触发器在另一个组中触发其按时间顺序排列的等价物时,我不知道如何在场景中应用此方法,例如:仅应用.each(),是否仍有可能实现此目的?很好,我尝试帮助用户,但没有进一步的评论,我获得了否决票。非常好..eq():完美!然而,现在我尝试在一个循环中应用它,以使每个触发器在另一个列表中按时间顺序触发它的等价项,比如:有什么建议吗?
    <ul class="canned-triggers">
        <li data-element="#li1">heyo1</li>
        <li data-element="#li2">heyo2</li>
        <li data-element="#li3">heyo3</li>
    </ul>
    
    <ul class="canned-content">
        <li id="li1">I'm heyo content 1</li>
        <li id="li1">I'm heyo content 2</li>
        <li id="li2">I'm heyo content 3</li>
    </ul>
    
    
    $('.canned-content > li').hide();
    
    $('.canned-triggers > li').click(function() {
        var toggleElement = $(this).data("element");
        $(toggleElement).show();
    });
    
    var all_help_triggers = $.makeArray( $(".canned-triggers > li") );