当给出一组所有具有相同data
元素的jQuery对象时,询问class
对该数据的值只给出了第一个元素。
<div class="Class" data-bool=false></div>
<div class="Class" data-bool=true></div>
var val = $(".Class").data("bool"); //false
无需使用$.each()
并浏览所有元素,是否有办法测试所有数据值是否相等?
答案 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 :)来做。当然,你可以在你的代码中将它减少到一行,但那是其他的。