【问题标题】:jquery selectors and loopingjquery 选择器和循环
【发布时间】:2013-04-04 01:44:37
【问题描述】:

我缺少 jQuery 对象的结构。我需要访问 <li> 项目的数据属性。 这会产生预期的输出,将最后一个 <li> 的数据对象打印到控制台:

console.log($('#assessment_list li:last').data());

但是当我尝试遍历更大的对象以获取每个 <li> 的数据时,我得到一个错误:

for (item in $('#assessment_list li')){
    console.log(item.data());
}

抛出:“未捕获的类型错误:对象 0 没有方法‘数据’”。我应该如何更改 for 循环中的选择器以仅命中 <li> 元素而不是 jQuery 对象中的其他键?

【问题讨论】:

    标签: jquery-selectors jquery


    【解决方案1】:

    试试:

    $('#assessment_list li').each(function() {
       console.log( $(this).data() );
    });
    

    【讨论】:

    • @thecodeparadox - 我试过这个,但得到了一个不同的错误,关于 htmlElementLi 没有方法 .data() 再次 - 基本上相同的错误但不同的对象标识符。下面建议的解决方案 jmar777 有效。我对为什么那个有效而你的建议不起作用有点困惑,但我现在回到了正轨。谢谢!
    • 哎呀,我想通了。我没能把“this”变成一个 jQuery 对象,所以当然没有 .data 方法。我想 +1 你,但我还没有足够的代表。
    • 也许你应该只是接受这个答案。我很欣赏我的接受,但这个更接近你原来的问题(也是正确的)。
    【解决方案2】:

    您可以使用map 获取所有数据值的数组:

    var values = $('#assessment_list li').map(function() {
        return $(this).data();
    }).get();
    
    console.log(values);
    

    【讨论】:

    • 是的,我不明白反对意见;这真的很有帮助。这实际上是我最终采用的方法。我确实将另一个答案设置为已接受,因为它更接近我提出原始问题的方式,但无论如何我真的想要数组中的值,所以我使用了你的建议的代码。再次感谢
    猜你喜欢
    • 2011-09-28
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多