在匿名函数中使用'this',IDE:可能无效的用法

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的复选框时,它会将所有其他复选框都标记为已选择。
2个回答

6

很可能是因为您的IDE不知道您所使用的函数中的对象this是什么,因此提示您this可能指向window对象或另一个上下文。

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

$(document).on("change", "#select-all", function() {
    $(this)
      .closest("table")
      .find("input[name='row-id']")
      .prop("checked", this.checked);
});

谢谢,有一个问题。在prop()中,this.checked是指'#select-all'this,还是.find()this - JorgeeFG
@Jorge 在这里,this 将指向 ID 为 select-all 的元素。 - VisioN

3

链接已于2016年2月失效。 - Perry Tew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接