比较同一类的多个元素的属性,看它们是否相同?

时间:2013-10-29 20:34:50

标签: jquery jquery-selectors comparison

假设我有以下元素集,如何比较以查看所有“数据类型”属性是否相同?

我知道我可以使用.each()迭代它们并存储“last”并逐一比较它们,但似乎应该有一种更简单,更优雅的方式。像以下(完全虚构的)功能......

<span class="item" data-type="server"></span>
<span class="item" data-type="server"></span>
<span class="item" data-type="server"></span>

$('.item').attr('data-type').sameFunc() = true

<span class="item" data-type="printer"></span>
<span class="item" data-type="server"></span>
<span class="item" data-type="server"></span>

$('.item').attr('data-type').sameFunc() = false

2 个答案:

答案 0 :(得分:3)

检查具有相同类的所有元素是否具有相同的数据属性:

$('.item').length == $('.item[data-type="server"]').length;

看看该类的元素数是否与该类数据属性的元素数相匹配。

编辑:

另一种不知道数据属性值的方法:

var same = $('.item').length == $('.item').filter(function(i) {
    return $(this).data('type') == $('.item').eq(i-1).data('type');
}).length;

FIDDLE

答案 1 :(得分:0)

function same(attr){
    return $('.item').length == $('.item[data-type="'+attr+'"]').length;
}

var isSame = same($('.item:first-child').attr('data-type'));

将获取第一个属性,然后将其传递,将其与其他属性进行比较......