我有以下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
我有:
<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();
});
但如何使用完整阵列?这是实现这个目标的正确方法吗?
答案 0 :(得分: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- *属性而不是海关属性。
<强> Fiddle 强>