创建具有相同类的元素数组

时间:2013-06-07 21:28:57

标签: arrays html-lists each

这是一种可接受的创建具有相同类的

  • 元素数组的方法,还是有更高效的方法?

    <ul>
      <li  class="show" id="all">All Posts</li>
      <li  class="show" id="user" data-user="7">My Posts</li>
      <li  class="show" id="follow">Following</li>
    </ul>
    
    $(document).ready(function() {
      var newarr=[];
      $("li").click(function(event) {
        var name = event.target.className;
        var newclass = 'choice';
    
      $(this).addClass(newclass);
      $(this).siblings().removeClass(newclass);
    
      $('li[class~=' + newclass + ']').each(function(index) {
        var thisid = $(this).attr('id');
        newarr[index] = thisid;
        })
    
      $.each(newarr,function(index,value) {
        //console.log(index + value);
            })
    
        });
    });
    
  • 2 个答案:

    答案 0 :(得分:0)

    我会使用map函数来创建数组:

    var newarr = $('li[class~=' + newclass + ']').map(function(){ 
                     return $(this).attr('id');
                  });
    

    答案 1 :(得分:0)

    我猜newarr[index] = thisid;应该是newarr[] = thisid;

    但是我再也不认为我明白你想做什么。

    你为什么要使用.click处理程序?

    在每次单击时,将newclass设置为单击的项目并将其添加到数组中。但你也从兄弟姐妹中删除了新类,所以先前点击的项目将再次丢失新类...所以在newarr中只有最后点击的项目才会有新类