【问题标题】:jQuery table filter not quite sorting correctlyjQuery 表格过滤器排序不正确
【发布时间】:2016-06-14 04:52:24
【问题描述】:

我一直在尝试使用我在fiddle 上找到的以下内容(在此示例中对其进行了一些修改)。甚至不确定我是否正确发布了这段代码......最好只看一下我猜的小提琴。

{
    filters[col] = text;

    $(table).find('tr').each(function(i){
        $(this).data('passed', true);
    });

    for(index in filters)
    {
        if(filters[index] !== 'any')
        {
            $(table).find('tr td:nth-child('+index+')').each(function(i){
                if($(this).text().indexOf(filters[index]) > -1 && $(this).parent().data('passed'))
                {
                    $(this).parent().data('passed', true);
                }
                else
                {
                    $(this).parent().data('passed', false);
                }
            });
        }
    }

    $(table).find('tr').each(function(i){
        if(!$(this).data('passed'))
        {
            $(this).hide();
        }
        else
        {
            $(this).show();
        }
    });
}

基本上我会有一个表,比如说 100 行,每行都会有一个列,其中包含一个计时器值,例如10 分钟或 15 分钟。当用户单击适当的“自定义过滤器”(例如 10 分钟)时,表格将被过滤为仅显示 10 分钟的所有条目。到目前为止,它 100% 有效。

但是,当用户可能用一位数字过滤任何内容时,例如 5 分钟或 1 分钟,它会丢弃,例如用户过滤 5 分钟的所有内容,现在它会丢弃 5 分钟、15 分钟、45 分钟等。

在示例中,10、15、45 和 59 分钟过滤器可以正常工作。 5 分钟和 9 分钟按钮过滤错误,您将在示例中看到我的意思。

有什么办法可以补救这种情况,这样当点击 5 min 过滤器时,它只会加载值为 5 min 的表列?我在另一个小提琴中看到过类似的东西(我现在找不到)认为它被称为正则表达式而不是 indexOf ...这是用于表中的搜索功能,但它有效。

如果您需要更多信息或更好的描述,请告诉我。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    这是一个更简单的方法,它使用 filter()eq() 并且只循环行一次

    function apply_filter(table, col, text) {
      var $rows = $(table).find('tr');
      if (text === 'any') {
        $rows.show();
      } else {
        // hide all rows then filter the ones to show
        $rows.hide().filter(function() {
          return $(this).children().eq(col - 1).text().trim() === text;
        }).show();
      }
    }
    

    DEMO

    【讨论】:

    • 谢谢查理正是我所需要的!非常感谢。
    • 嗨@charlietfl,上面的代码可以完美地工作,但我已经到了过滤器太多的地步。假设我想将一个过滤器分组以包含 2 个值,例如当您单击按钮时,将显示所有“5 分钟”和 10 分钟值,而不是“5 分钟”。
    • 修改逻辑以确定在 filter() 中返回的内容。可以创建选择数组
    • 遗憾的是,我对一般编码的基本了解还不够,我拼凑起来尝试完成这项工作的点点滴滴充其量是可笑的,甚至无法让数组正常工作。我会继续寻找和尝试。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 2021-05-02
    • 2016-05-20
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多