当我想参考"这个"会发生什么?在嵌套语句中," this"它用吗?
这是一个显示我的意思的例子:
$("input").blur(function(){
var theThis = $(this);
if(!($(".invalid").length > 0)){
//if there's no messages already open
theThis.data("validator").checkValidity();
}else{
//add the message to the next to be displayed
nextToAlert.push(theThis);
//bind an event to the errored field being changed
$(".invalid").on("change", function(){
var me = $(this);
if(!me.hasClass('invalid')){
nextToAlert.pop().checkValidity();
}
});
}
});
答案 0 :(得分:1)
阅读this article以更好地了解$(this)
。作为一个简单的(并不总是正确但在99%的情况下)规则:$(this)
将引用当前执行上下文中的元素(DOM文档中的当前位置)。
在你的例子中:
theThis
将是(当前)$("input")
me
将是(当前)$(".invalid")
答案 1 :(得分:1)
在您的代码中:
theThis
指的是$("input")
me
撤回$(".invalid")
$(this)
将始终根据当前范围而变化。
当您使用任何类型的动作绑定功能时,例如blur
,on
,bind
,live
等,那么$(this)
将引用当前绑定事件的jQuery对象。
答案 2 :(得分:1)
Javascript使用函数作用域:this
的值取决于如何调用包含它的最内层函数。当您致电object.method()
时,方法内的this
值为object
;如果您致电function()
,则this
的值为window
。您也可以通过调用this
将function.call(thisValue)
设置为任意值。当函数是回调函数时,值this
取决于完全取决于调用它的代码,因此您的主要信息源应该是jQuery文档。但通常jQuery会将this
设置为动作发生的DOM元素。例如。对于$('.foo').on('click', myFunc)
,this
中myFunc
的值将是捕获点击的元素,对于$('.foo').each(myFunc)
,它将是集合中的当前元素,依此类推。然后使用$(this)
将DOM元素转换为jQuery元素。