我曾经有过这样的电话:
var link = $('<a />', { 'class': 'prop' + index, title: elt, text: elt });
link.on('click', switchLabel);
Run Code Online (Sandbox Code Playgroud)
用switchLabel如下:
function switchLabel(e) {
$('#' + this.className.replace('prop','corr')).text(this.title);
}
Run Code Online (Sandbox Code Playgroud)
我刚刚意识到this很难理解它在javascript中的含义,所以我用以下代码替换:
function switchLabel(e) {
var source = e.currentTarget;
$('#' + source.className.replace('prop','corr')).text(source.title);
}
Run Code Online (Sandbox Code Playgroud)
我对么?请在答案中添加一些解释,我们(js noobs)可以学习.
将其this描述为"非常模糊" 是不正确的.特别是,jQuery保证this将引用处理程序中的"right"元素.
现在,"正确"的含义可能会根据处理程序的建立方式而有所不同,但它始终是有意义的.例如,当在.on()调用中直接分配处理程序时,处理程序中的值this将是该原始选择中的元素(或其中一个元素,适用于所采取的实际操作).在委托的情况下.on(),那么this将再次是与选择器匹配的元素.
也就是说,有时候检查e.target是有意义的还是非常必要的; 这样做并没有什么特别的错误,但是因为迷信而这样做this是有点愚蠢的.