测试一组没有循环的元素之间的html5数据相等性

时间:2013-08-06 20:05:15

标签: javascript jquery

当给出一组所有具有相同data元素的jQuery对象时,询问class对该数据的值只给出了第一个元素。

<div class="Class" data-bool=false></div>
<div class="Class" data-bool=true></div>


var val = $(".Class").data("bool"); //false

无需使用$.each()并浏览所有元素,是否有办法测试所有数据值是否相等?

4 个答案:

答案 0 :(得分:3)

如果你真的想在一行中做到这一点,你可以尝试这样的事情:

$(".Class").length === $('.Class[data-bool=true]').length;

当您向data属性添加更多可能的值并且不会通过jQuery的data()方法考虑更新时,此方法将变得越来越复杂。编写一个简单的循环会更容易。

答案 1 :(得分:2)

如果你今天决定对环路感到厌恶......唉。你可以:

if($(".Class").length == $(".Class[data-bool=false]").length){
   // cool stuff here
}

答案 2 :(得分:2)

如果你真的讨厌编写循环,你可以通过创建一个jQuery插件来解决它:

$.fn.allData = function(key, value) {
  var result = true;
  this.each(function() {
    if ($(this).data(key) != value)
      return result = false;
  });
  return result;
};

然后:

var allTrue = $('.Class').allData('bool', true);

伴侣“anyData”留给读者练习:)

答案 3 :(得分:1)

澄清一下,真正的答案是。否则你可以用普通的JavaScript而不是jQuery :)来做。当然,你可以在你的代码中将它减少到一行,但那是其他的。