我想找到id
未包含在数组列表中的所有div。
示例:
Array: [1, 2, 5]
Div的:
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>
<div id="5"></div>
我想找到不包括的div:3和4。
我知道我能做到:
var array = [1, 2, 5];
var stringNot = '';
$.each(array, function (index, element) {
stringNot.concat('#' + element + ',');
}
stringNot = stringNot.replace(/,\s*$/, ''); // Removing last comma.
$('div').not(stringNot);
但是,这是一个简单的方法吗?
答案 0 :(得分:4)
您可以使用not()
排除元素
从匹配元素集中删除元素。
步骤:
div
。join
使用#,
加入数组元素,因为数组中的元素为id
s #
,对于数组中的第一个元素join
将不添加代码和演示
var arr = [1, 2, 5];
$('div').not('#' + arr.join(',#')).addClass('included');
div {
padding: 5px;
background: red;
width: 20px;
height: 20px;
margin: 5px;
text-align: center;
}
.included {
background: green;
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div id="1">1</div>
<div id="2">2</div>
<div id="3">3</div>
<div id="4">4</div>
<div id="5">5</div>
答案 1 :(得分:3)
虽然您已经选择了答案,但以下是您在Javascript(而不是jQuery)中的表现方式:
var idList = [1, 2, 5], // array of ids
divs = document.querySelectorAll('div'), // select all divs
notFound;
notFound = [].filter.call(divs, function(div) { // filter into a new array
return (idList.indexOf((+div.id)) < 0); // where numeric id is not found
});
代码段:
var idList = [1, 2, 5], divs = document.querySelectorAll('div'),
notFound;
notFound = [].filter.call(divs, function(div) {
return (idList.indexOf((+div.id)) < 0);
});
[].forEach.call(notFound, function(div) {
div.setAttribute("class", "notfound");
});
&#13;
.notfound { background-color: yellow; }
&#13;
<div id="1">1</div>
<div id="2">2</div>
<div id="3">3</div>
<div id="4">4</div>
<div id="5">5</div>
&#13;
答案 2 :(得分:0)
你能用jQuery吗?您可以尝试使用:not()
选择器