.on()函数jQuery的“this”上下文

时间:2013-01-24 11:13:20

标签: jquery this

我想知道如何在this方法中将.on()指向所选元素(事件源),而不定义匿名事件处理函数。

例如,在下面的代码中,我所选元素的上下文为document,即$(this)被解释为document

$('.nav-item').click(MyFrameworkUtils.navigationBinding($(this), 'arg1', 'arg2'))

但是,如果包装在匿名事件处理程序中,$(this)将被解释(最好)为所选元素。

$('.nav-item').click(function(){
    var source = $(this);
    MyFrameworkUtils.navigationBinding(source, 'arg1', 'arg2');
});

2 个答案:

答案 0 :(得分:6)

您可以使用以下语法:

$('.nav-item').click({arg1:'arg1', arg2:'arg2'}, MyFrameworkUtils.navigationBinding)

并且函数看起来像这样:

function navigationBinding(event) {
    var source = $(this);
    var arg1 = event.data.arg1;
    var arg2 = event.data.arg2;
}

答案 1 :(得分:1)

在您的第一个示例中,您将MyFrameworkUtils.navigationBinding($(this), 'arg1', 'arg2')的结果传递到click方法中。因此,this的上下文是外部范围,在您的情况下是document

使用第二个示例但是范围是内部函数,并且与DOM触发的大多数事件一样,this是触发元素。

另外[可能不相关],在调用函数时,您可以使用thisapply方法定义call,如What is the difference between call and apply?

中所述。