javascript - JQuery 访问单击的元素而不使用闭包

标签 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 函数中访问单击的元素

最佳答案

您可以使用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);

关于javascript - JQuery 访问单击的元素而不使用闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253055/

相关文章:

Jquery如何构建动态html

python - 如何在回调函数中获取换行符(%s 或 .format)

callback - 为了方便起见,我们可以编辑回调函数 HAL_UART_TxCpltCallback 吗?

javascript - Javascript:处理用户生成的脚本的最佳方法

javascript - 如何在Vue中的组件之间共享一些代码

javascript - Angular Validation ng 消息

jquery - 如何在 jQuery 中进行回调?

jquery - 防止 div 内容覆盖其他 div

error-handling - 当请求处理程序失败时,NServiceBus 6回调客户端永远不会获得回调

javascript - 在 React 中迭代 JSON 对象