一个功能搜索每个类带有名称.resultsblock的类,如果可见,则将数据放入数组中



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') {

它将检查迭代当前打开的元素的显示值。

相关内容

  • 没有找到相关文章

最新更新