0

我想知道如何在不定义匿名事件处理函数的情况下指向方法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');
});
4

2 回答 2

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;
}
于 2013-01-24T11:24:22.320 回答
1

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

然而,对于第二个示例,范围是内部函数,并且与大多数由 DOM 触发的事件一样,this是触发元素。

另外[可能不相关],当调用函数时,您可以this使用applyorcall方法定义,正如调用和应用之间有什么区别?

于 2013-01-24T11:19:07.010 回答