通过选中的复选框过滤表格,更改方法

时间:2019-04-11 18:46:27

标签: javascript jquery

我写了一个过滤复选框表的方法,这里是:

this.filterTableByColumn = function (filters) {
  if (!this.form[this.currentColumn])
    return;

  var table = this.table;

  filterTable();

  // Functions
  function filterTable() {
    table.find('tr:visible').each(function () {
      var row = $(this);

      if (!row.hasClass("table-row-header")) {
        for (var index in filters) {
          if (filters[index].length) {
            var row = $(this);

            rowMustBeShown(row, filters) ? row.show() : row.hide();
          }
         }
       }
    });
  }

   function rowMustBeShown(row, filters) {
     var condition = false;

     for (var index in filters) {
       if (filters[index].length)
         condition = checkRowByFilter(filters[index], row, index);
     }

    return condition;
  }

  function checkRowByFilter(filter, row, index) {
    var condition2 = false;
    var colIndex = index - 1;

    if (filter.length) {
      filter.forEach(function (filterItem) {

        var cell = row.find("td:eq(" + colIndex + "):contains(" + filterItem + ")");

         if (cell.text().indexOf(filterItem) >= 0)
          condition2 = true;
       });
     }

     return condition2;
   }
 }

Here is my checkboxes

在filters参数中,我得到一个带有两个复选框数组的对象:

{
    5: ["ended", "confirmed"]
    7: ["on-line"]
}

在上面的对象示例的情况下,该方法显示带有单元格的所有行,这些单元格包含“在线”,“结束”,“已确认”。我想重新制作显示所有单元格包含“在线”的行的方法,其中所有单元格也包含“结束”,“已确认”的单元格。我已经没有想法了。有人可以帮忙吗?

0 个答案:

没有答案