点击每个李获得所有李同一类的ID

时间:2014-03-11 10:20:55

标签: jquery

我有一个像以下

的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时创建数组,而不是单击任何按钮。

如何使用查询执行此操作? 提前致谢

3 个答案:

答案 0 :(得分:1)

使用.map()

尝试此操作
var selectedID = $('#names li.selected').map(function(){
  return this.id;
}).get();

DEMO

要获取数组中的所有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);
});

DEMO

答案 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();

JSFiddle