【发布时间】:2014-02-16 21:49:38
【问题描述】:
我使用的 IDE (Cloud 9) 结合了 JSHint,当它检测到错误时会向我发出警告。作为一项原则,我会尝试纠正我的代码以纠正这些错误。我现在有一个我无法解决的问题:
$("#component-manager tr:not(.edit-component) td").on("click", function() {
if ($(this).index() !== 0) {
var checkbox = $(this).parent().find("input[name=component-selected]");
checkbox.trigger("click");
}
});
这段代码给了我一个警告:“在回调函数中使用'this'”。
我有两个问题:
- 我应该如何改进我的代码并消除此警告。
- 为什么最好不要在回调函数中使用
this(因为这是 JSHint 试图提倡的)?
【问题讨论】:
-
我认为这是 IDE 中的错误或配置错误。明确而热情地鼓励在 jQuery 回调中使用
this。 -
JShint 没有给我任何警告或错误。
-
你可以用
function(e){ $(e.target) ...代替function(){ $(this) ... -
唯一可以改进代码的方法是缓存 jQuery 对象:
var $this = $(this);。它不会消除错误,但它被认为是一种很好的做法,特别是如果您一次又一次地重复进行相同的选择。可能不是您在这里需要的东西,而是未来代码需要考虑的东西。
标签: javascript jquery jshint