Селектор для нескольких значений атрибутов в состоянии И

У меня есть следующий html:

<div id="wrapper">
 <div>a</div>
 <div tag="one, two, three">b</div>
 <div tag="three">c</div>
 <div tag="four, one">d</div>
 <p>e</p>
</div>

с JQuery Мне нужно .hide все дети #wrapper не содержат хорошо известный массив тегов в условии AND.

Пример:

Во- one, three меня one, three:

<div id="wrapper">
 <div tag="one, two, three">b</div>
</div>

Для одного тега мне удалось работать таким образом:

var tag= tagArray[0];

$("#wrapper> *:not([tag='" + tag + "'])").each(function (index, value) {
 $(value).hide();
});

Но как работать с полным массивом? Правильно ли это сделать?

1 ответ

Вы можете использовать этот код:

var tagArray = ['three', 'two']


$.each(tagArray, function(){
 var tag = this;
 $("#wrapper> *").filter(function(){
 var regexp = new RegExp('\\b'+tag+'\\b');
 return !($(this).attr('tag') && $(this).attr('tag').match(regexp));
 }).hide()
})

Вы перебираете массив тегов, а затем сравниваете их с регулярным выражением.

Кроме того, было бы лучше использовать атрибут HTML5 data- * вместо обычных.

скрипка

licensed under cc by-sa 3.0 with attribution.