2012-06-05 224 views
0

我想用某些篩選器篩選表。有些是簡單的選擇,有些則是多重選擇。對於簡單的,沒關係,但不是倍數。與多選擇jQuery篩選器表

我想遵循這一邏輯:

  1. 通過包含所述過濾器(filtre_transports
  2. 通過包含的值(一個或多個)所述陣列傳遞數組傳遞(ligne_transports
  3. 如果1.的元素不在中2.所以不能顯示行(transports_matches = false

我做了這個代碼:

// Pass through each line of the table 
jQuery('#agents_liste tbody tr').not('.vide').each(function() { 
    var transports_matches = true; 

    // ligne_transports is an array contains values to compare with the filter 
    var ligne_transports = jQuery(this).children('td').eq(2).text().split('###'); 

    // filtre_transports is an array contains the selected val of a multi select 
    jQuery(filtre_transports).each(function() { 
     var filtre = jQuery(this); 
     var filtreOk = false; 

     jQuery(ligne_transports).each(function() { 
      if (filtre == jQuery(this)) { 
       filtreOk = true; 
       return false; 
      } 
     }); 

     if (!filtreOk) { 
      transports_matches = false; 
      return false; 
     } 
    }); 
}); 

問題:當我們有選擇的過濾器,結果transports_matches永遠是假的。

順便說一句,我看到this post答案是使用類,但有沒有一種方式嗎?

編輯:你可以看到JSFiddle here

感謝

+0

使用類絕對不是必需的。你可以把它張貼在jsfiddle上,這樣我們可以看看一個(不)工作的例子嗎? – wroniasty

+0

您現在可以看到JSFiddle,感謝您的評論! – Val

回答

1

修正:http://jsfiddle.net/r4mfv/2/

你有幾個問題:

  1. $(filtre_transports).each不是遍歷數組的方式,你應該使用$.each(filtre_transports, function() {...})

  2. 在比較它們之前,您應該投下filtrethisString

+0

你確定一個簡單的$(x).each()不適合迭代數組嗎?如果你有一個關於它的鏈接,請發表評論,我對它感興趣。並且非常感謝你的回答,+1和「接受」! :) – Val

+1

$(x).each用於遍歷一個jQuery對象$ .each - 遍歷任何可迭代的JS對象。 [文檔](http://api.jquery.com/each/) – wroniasty