我有一个像以下
的DOM元素<ul id="names">
<li id="aa" class="selected">aa</li>
<li id="bb">bb</li>
<li id="cc">cc</li>
<li id="dd">dd</li>
</ul>
当我点击一个li元素时,一个“selected”类被添加到该元素中。并且在单击选定的li时,该类将被删除。 现在,每当我点击一个li时,我需要创建一个包含所有li元素的数组。
如果选择了aa和bb,那么我的数组应该看起来像这样[“aa”,“bb”] 当我使用选择bb并选择cc时,它应该变为['aa','cc']。应该在点击li时创建数组,而不是单击任何按钮。
如何使用查询执行此操作? 提前致谢
答案 0 :(得分:1)
使用.map()
var selectedID = $('#names li.selected').map(function(){
return this.id;
}).get();
要获取数组中的所有ID,请执行此操作
$('#All').on('click',function(){
var selectedID = $('#names li').not(this).map(function(){
return this.id;
}).get();
});
或使用兄弟姐妹()
$('#All').on('click',function(){
var selectedID = $(this).siblings('li').map(function(){
return this.id;
}).get();
console.log(selectedID);
});
答案 1 :(得分:1)
您可以使用 map() :
var selectedLis = $('#names li.selected').map(function() {
return this.id;
}).get();
console.log(selectedLis);
<强> Fiddle Demo 强>
<小时/> 编辑:根据您的评论,您可以执行以下操作:
$('#All').click(function () {
var selectedLis = $('#names li').not(this).map(function () {
return this.id;
}).get();
console.log(selectedLis);
});
<强> Fiddle Demo 强>
答案 2 :(得分:1)
假设您想要一个id
数组,其中该元素的类为selected
,只需将元素'id
映射到具有jQuery map()
的数组,任何时候你需要得到它们:
var ids = $('#names .selected').map(function(){
return this.id;
}).get();