我想知道如何在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');
});
答案 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
是触发元素。
另外[可能不相关],在调用函数时,您可以使用this
或apply
方法定义call
,如What is the difference between call and apply?