【问题标题】:jQuery filter table with multi select带有多选的 jQuery 过滤表
【发布时间】:2012-06-09 05:51:14
【问题描述】:

我正在尝试使用一些过滤器过滤表格。有些是简单的选择,有些是倍数。对于简单的,没关系,但不是倍数。

我想遵循这个逻辑:

  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

谢谢

【问题讨论】:

  • 绝对不需要使用类。你能把它贴在 jsfiddle 上,这样我们就可以看看一个(不)工作的例子吗?
  • 您现在可以看到 JSFiddle,感谢您的评论!

标签: javascript jquery filter


【解决方案1】:

固定:http://jsfiddle.net/r4mfv/2/

你有几个问题:

  1. $(filtre_transports).each 不是遍历数组的方法,您应该使用$.each(filtre_transports, function() {...})

  2. 在比较它们之前,您应该将filtrethis 转换为String

【讨论】:

  • 您确定简单的 $(x).each() 不适合遍历数组吗?如果您有谈论它的链接,请在评论中发布,我对此很感兴趣。非常感谢您的回答,+1 和“接受”! :)
  • $(x).each 用于迭代 jQuery 对象 $.each - 迭代任何可迭代的 JS 对象。 docs
猜你喜欢
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多