0

我想在一个类中搜索具有与数组匹配的 data-id 属性的元素,并隐藏它们。

的HTML:

<li class="list" data-id="1">one</li>
<li class="list" data-id="2">two</li>
<li class="list" data-id="3">three</li>
<li class="list" data-id="4">four</li>

我有一个数组: var dataIDcheck = ['1', '3']

关于如何搜索类 .list 并隐藏 1 和 3(或数组中的任何内容)的任何想法?

4

5 回答 5

2
var dataIDcheck = ['1', '3'];
$('[data-id="' + dataIDcheck.join('"], [data-id="') + '"]').hide();

http://jsbin.com/ojipaw/1/

于 2013-01-03T16:36:10.217 回答
1

您可以使用filterinArray功能

 $('.list').filter(function(){
      return $.inArray($(this).data('id'),dataIDcheck) > -1
 }).hide(); // <-- hides any elements that have data-id found in array
于 2013-01-03T16:33:24.493 回答
0
var ids   = [1, 3],
    count = ids.length,
    parts = [];

for (var i = 0; i < count; i++) {
    parts.push('[data-id="' + ids[i] + '"]');
}

var selector = parts.join(',');

var elems = document.querySelectorAll(selector);

这适用于标准 DOM (IE8+),不需要任何库。querySelectorAll()查看文档也可能对您有意义。

于 2013-01-03T16:21:59.487 回答
0
for (id in dataIDcheck) {
    $('.list[data-id=' + dataIDcheck[id] + ']').hide()
}
于 2013-01-03T16:32:57.780 回答
0

为什么不是 jquery 的inArray()

var dataIDcheck = [1, 3];


$('.list').each(function() {
    if($.inArray($(this).data("id"),dataIDcheck) > -1) {
      $(this).fadeOut(); 
    }
});

小提琴 </p>

于 2013-01-03T16:33:27.973 回答