2012-06-05 222 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