如何将附加参数传递给jQuery过滤器函数

时间:2016-08-16 10:37:18

标签: javascript jquery

我有一个for循环来过滤一些表:

for(columnIndex = 1; columnIndex <= contentColumnsNumber; columnIndex++) {
  $clonedTable = $table.clone();

  $clonedTable.find('th, td').filter(function() {
    if($(this).index() === 0 || $(this).index() === columnIndex) {
      return false;
    }

    return true;
  }).remove();

  $clonedTable.appendTo($mobileTablesWrap);
}

JSLint建议不要在循环中创建函数: http://eslint.org/docs/rules/no-loop-func

因此,我想重构这段代码。所以我创建了另一个方法并调用它们,而不是内联函数:

function getRemovableCells(index, element, columnIndex) {
  if($(this).index() === 0 || $(this).index() === columnIndex) {
    return false;
  }

  return true;
}

function filterTable() {
  [...]

  for(columnIndex = 1; columnIndex <= contentColumnsNumber; columnIndex++) {
    $clonedTable = $table.clone();

    $clonedTable.find('th, td').filter(getRemovableCells).remove();

    $clonedTable.appendTo($mobileTablesWrap);
  }
}

现在,我的问题是获得columnIndex的值。该值由循环提供,我需要将它们传递给过滤器函数。 filter函数已经有两个名为indexelement的参数: http://api.jquery.com/filter/#filter-function

所以我试图在循环中传递变量,但随后,上下文将被更改。我只是覆盖了现有的论点和this

$clonedTable.find('th, td').filter(getRemovableCells(columnIndex)).remove();

同样bindcall / apply也无法帮助我。

0 个答案:

没有答案