0

这是创建数组的可接受方法吗

  • 具有相同类的元素,还是有更有效的方法?

    <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);
            })
    
        });
    });
    
  • 4

    2 回答 2

    0

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

    但话又说回来,我什至不认为我明白你想做什么。

    你为什么在 .click 处理程序中工作?

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

    于 2013-06-07T21:40:35.080 回答
    0

    我将使用该map函数来创建数组:

    var newarr = $('li[class~=' + newclass + ']').map(function(){ 
                     return $(this).attr('id');
                  });
    
    于 2013-06-07T21:32:02.687 回答