hiho,一个功能搜索每个类带有名称.resultsblock的类,如果可见,则将数据放入数组中。
问题是,第一类是"显示:块"所有期货值返回true,并将在数组中占UT,包括" display:none",如果第一个是" display:none",则所有值返回false...
<div id="measure_print" class="resultblock" data-nid="900" style="display: block;">
<p>blablalblabla</p>
</div>
<div id="measure_print" class="resultblock" data-nid="988" style="display: none;">
<p>blablalblabla</p>
</div>
<div id="measure_print" class="resultblock" data-nid="999" style="display: none;">
<p>blablalblabla</p>
</div>
<button type="button" onClick = "cartAction('addall','')" >Add All</button>
function cartAction(action,nID) {
var nidarr = [];
if(action != "") {
switch(action) {
case "addall":
$.each($('.resultblock'), function(index, value) {
var temp = parseInt($(value).data('nid'));
var query = $('#measure_print');
if ($('.resultblock').css('display') !== 'none') {
nidarr.push(temp);
console.log(temp);
}
});
console.log(nidarr);
break;
}
}
}
我做了自己的解决方案 ->
演示https://jsfiddle.net/kardebadas/j3f9scet/3/
您正在抓住所有.ResultBlock Divs,而不仅仅是当前迭代。我还建议jquerys是(可见的),以便一点更清洁的代码:)
function cartAction(action,measure_N_ID) {
var nidarr = [];
if(action != "") {
switch(action) {
case "addall":
$.each($('.resultblock'), function(index, value) {
var temp = parseInt($(value).data('nid'));
var query = $('#measure_print');
if ($(this).is(':visible')) {
nidarr.push(temp);
console.log(temp);
}
});
console.log(nidarr);
break;
}
}
}
现在,您的if语句正在与ResultBlock类重新选择所有DIV,这就是为什么它一直是正确的。如果您从
更改if语句if ($('.resultblock').css('display') !== 'none') {
to
if ($(value).css('display') !== 'none') {
它将检查迭代当前打开的元素的显示值。