7

就最佳实践而言,下一个功能(实际上有效)是否不好?

IDE 警告我

'this' 的潜在无效用法。检查 Javascript 'this' 是否在相同的闭包或外部内容中。

$(document).on('change', '#select-all', function(){
    if( this.checked ) {
      $(this).closest('table').find('input[name="row-id"]').each( function() {
        this.checked = true; // Here
      })
    }
    else {
      $(this).closest('table').find('input[name="row-id"]').each( function() {
        this.checked = false; // Here
      });
    }
  });

当我选中一个带有 ID 的复选框时select-all,它会将所有其他复选框标记为已选中。

4

2 回答 2

6

最有可能发生这种情况是因为您的 IDE 不知道this您使用的函数中指的是什么对象,因此给您一个this可能引用window对象或其他上下文的提示。

顺便说一句,您的代码可以重写为:

$(document).on("change", "#select-all", function() {
    $(this)
      .closest("table")
      .find("input[name='row-id']")
      .prop("checked", this.checked);
});
于 2013-10-10T14:01:36.453 回答
3

@Jorge 它与 javascript 中闭包的范围和this.

如需进一步阅读,请尝试以下内容:http: //javascriptplayground.com/blog/2012/04/javascript-variable-scope-this/

我还没有完全阅读它,但它总结得很好。

于 2013-10-10T14:00:48.600 回答