使用Jquery将所有li的ID推入数组

3

我需要将所有ID推入一个数组中,不管我尝试了哪种方法,都只会将第一个ID推入数组中:

  var some = [];
  $('ul#jdLists li').each(function () {
   some.push([$('ul#jdLists li').attr("id")]);
  });

这将返回数组中正确的项目数量,但是带有第一个li的ID。
或者:
    var some = [];                
    some.push([$('ul#jdLists li').attr("id")]);

这将返回具有第一个li ID的单个项。
谢谢。

.attr和其他的getter方法从第一个选定的元素中获取值,因为无法知道您要从哪个元素获取属性。 - Kevin B
3个回答

11

这段代码:some.push([$('ul#jdLists li').attr("id")]);将会push ul#jdLists li选择器找到的第一个li的id,你需要做的是获取每个li的id,可以在each函数内完成:

var some = [];
$('ul#jdLists li').each(function () {
   some.push($(this).attr("id"));
   // or
   some.push(this.id);
});

使用 some.push(this.id) 可以避免为每个元素创建一个新的 jQuery 对象。 - amustill
是的,我已经编辑了我的答案并加入了它,感谢您的评论。 - Zbigniew
那个方法非常有效,谢谢。我已经接近成功了,但还是差了一点。 - atlMapper

4

或者你可以使用$.map()

var ids = $('ul#jdLists li').map(function () {
   return this.id;
}).get();

1
在我看来,这是一个更加优雅的解决方案。 - Rory McCrossan

0
var some = [];
$('ul#jdLists li').each(function (i, el) {
   some.push(el.id);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接