jquery $(this)在嵌套语句中?

时间:2012-08-15 08:53:28

标签: javascript jquery

当我想参考"这个"会发生什么?在嵌套语句中," 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();

                    }
                });
            }
    });

3 个答案:

答案 0 :(得分:1)

阅读this article以更好地了解$(this)。作为一个简单的(并不总是正确但在99%的情况下)规则:$(this)将引用当前执行上下文中的元素(DOM文档中的当前位置)。

在你的例子中:

  • theThis将是(当前)$("input")
  • me将是(当前)$(".invalid")

答案 1 :(得分:1)

在您的代码中:

  • theThis指的是$("input")
  • me撤回$(".invalid")

$(this)将始终根据当前范围而变化。

当您使用任何类型的动作绑定功能时,例如bluronbindlive等,那么$(this)将引用当前绑定事件的jQuery对象。

答案 2 :(得分:1)

Javascript使用函数作用域:this的值取决于如何调用包含它的最内层函数。当您致电object.method()时,方法内的this值为object;如果您致电function(),则this的值为window。您也可以通过调用thisfunction.call(thisValue)设置为任意值。当函数是回调函数时,值this取决于完全取决于调用它的代码,因此您的主要信息源应该是jQuery文档。但通常jQuery会将this设置为动作发生的DOM元素。例如。对于$('.foo').on('click', myFunc)thismyFunc的值将是捕获点击的元素,对于$('.foo').each(myFunc),它将是集合中的当前元素,依此类推。然后使用$(this)将DOM元素转换为jQuery元素。