这是一种可接受的创建具有相同类的
<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);
})
});
});
答案 0 :(得分:0)
我会使用map
函数来创建数组:
var newarr = $('li[class~=' + newclass + ']').map(function(){
return $(this).attr('id');
});
答案 1 :(得分:0)
我猜newarr[index] = thisid;
应该是newarr[] = thisid;
。
但是我再也不认为我明白你想做什么。
你为什么要使用.click处理程序?
在每次单击时,将newclass设置为单击的项目并将其添加到数组中。但你也从兄弟姐妹中删除了新类,所以先前点击的项目将再次丢失新类...所以在newarr中只有最后点击的项目才会有新类