函数搜索每个 class 名称为 .resultsblock 的函数,如果可见,则将数据放入数组中
A function search every class with name .resultsblock and if is visible put a data in array
嗨,
函数搜索名称为 .resultsblock 的每个 class,如果可见,则将数据放入数组中。
问题是当第一个 class 是 "display: block" 所有期货值 return true 并且将被放入数组中时,包括 "display:none" 并且如果第一个是 "display: none" 所有值 return 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;
}
}
}
我做了自己的解决方案 -->
现在您的 if 语句正在使用结果块 class 重新选择所有 div,这就是为什么它始终为真。如果您将 if 语句从
if ($('.resultblock').css('display') !== 'none') {
至
if ($(value).css('display') !== 'none') {
它将检查迭代当前所在元素的显示值。
您正在抓取所有 .resultblock div 而不是仅抓取当前迭代。我还推荐 jquerys is('visible') 以获得更简洁的代码:)
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;
}
}
}
嗨, 函数搜索名称为 .resultsblock 的每个 class,如果可见,则将数据放入数组中。
问题是当第一个 class 是 "display: block" 所有期货值 return true 并且将被放入数组中时,包括 "display:none" 并且如果第一个是 "display: none" 所有值 return 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;
}
}
}
我做了自己的解决方案 -->
现在您的 if 语句正在使用结果块 class 重新选择所有 div,这就是为什么它始终为真。如果您将 if 语句从
if ($('.resultblock').css('display') !== 'none') {
至
if ($(value).css('display') !== 'none') {
它将检查迭代当前所在元素的显示值。
您正在抓取所有 .resultblock div 而不是仅抓取当前迭代。我还推荐 jquerys is('visible') 以获得更简洁的代码:)
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;
}
}
}