2016-11-24 33 views
0

Hiho, 函數搜索名稱爲.resultsblock的每個類,如果可見,則將數據放入數組中。函數搜索名稱爲.resultsblock的每個類,如果可見,則將數據放入數組

問題是,當第一個類是「display:block」時,所有期貨值返回true,並且將在數組中包括「display:none」,如果第一個是「display:none」假...

<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; 
    } 
    } 
} 

我做我自己的解決方案 - >

DEMO LIVE https://jsfiddle.net/kardebadas/j3f9scet/3/

+0

屬性'id'必須是唯一的,具有相同的'id'幾個要素的價值,所以無用的進行搜索(「可見」) (只有第一個被發現) –

回答

0

您正在抓取所有.resultblock div,而不是僅抓取當前迭代。我還建議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; 
    } 
    } 
} 
0

現在你的if語句重新選擇與resultblock類的所有div,這就是爲什麼它一直都是如此。如果從

if ($('.resultblock').css('display') !== 'none') { 

改變你的if語句

if ($(value).css('display') !== 'none') { 

它會檢查元素的顯示值迭代是目前替代。

相關問題