jquery数据选择器查找具有特定数据值的所有元素

时间:2013-05-03 21:38:31

标签: javascript jquery

我正在尝试将所有具有某个数据属性的元素设置为特定值,然后隐藏具有相同数据属性但具有不同值的所有其他元素。

我所拥有的代码似乎隐藏了所有元素,无论它们是否具有数据属性。

$('*').filter(function() {return $(this).data(dataAttr) == dataVal;}).show();
$('*').filter(function () { return $(this).data(dataAttr) !== dataVal; }).hide();

我需要这是动态的,因为我传递的是data-属性的名称和要匹配的值。

1 个答案:

答案 0 :(得分:1)

  

我所拥有的代码似乎隐藏了所有元素,无论它们是否具有数据属性。

那是因为您正在选择'*'的所有元素。如果元素甚至没有这样的属性,那么您将undefined与值(undefined !== someValue)进行比较可能总是true

首先选择具有该属性的所有元素,隐藏它们,然后显示具有特定值的元素:

$('[' + dataAttr + ']').hide()
.filter('[' + dataAttr + '="' + dataVal + '"]').show();

我决定在这里使用选择器,因为我相信使用.filter.data会慢得多。