jquery、zepto如何将对象集合的某个属性生成一个集合?

比如说

<ul id="ul">
  <li data-id="1"></li>
  <li data-id="2"></li>
  <li data-id="3"></li>
</ul>

如何获取将所有data-id弄成一个集合(比如数组)?
我是想实现判断出data-id中的最大值,我的想法是把data-id弄成一个集合,在比较,是否有更好的想法?

阅读 3.8k
1 个回答

我最初想的是能不能$("#ul").find("*").data("id")直接取得。可惜.data()是jQuery中不多见的不能用于集合元素的方法。对一个jQuery集合调用.data()结果是只对第一个元素生效。

所以这个需求就必须明确使用jQuery里集合遍历的相关方法了。其实也很简单:

$(function(){
    console.log(
        $("#ul").find("*").map(function(){
            return $(this).data("id");
        })
    ); // Object[1, 2, 3]
});

.map()方法忽略所有的undefined,因此不用对不包含data-id属性的子元素做出任何特殊处理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题