JQuery访问clicked元素而不使用闭包

时间:2016-02-07 11:47:24

标签: javascript jquery callback closures

我正在尝试处理像这样的简单JQuery点击事件

$('nav.menu a').on('click', function(){
   console.log($(this)); // returns the DOM element
});

但是由于我想重用闭包,我将它改为普通函数:

function myClickCallback(event, someParam){
    console.log($(this)); // returns the 'window' obj
}

$('nav.menu a').on('click', myClickCallback(event, someParam));

所以问题是如何从myClickCallback函数

中访问被点击的元素

1 个答案:

答案 0 :(得分:2)

您可以使用event.target

function myClickCallback(event){
    console.log($(event.target)); 
}

$('nav.menu a').on('click', myClickCallback);

如果要将参数传递给函数,可以使用event.data的传输机制。 event.data包含调用事件处理函数时传递给$.on的数据参数:

function myClickCallback(event){
    console.log('event on ' + $(event.target)); 
    console.log('param ' + event.data); 
}

$('nav.menu a').on('click', null, 'theParam', myClickCallback);