我可以通过调用
来使用jQuery设置onclick处理程序$('#id').click(function(){
console.log('click!');
});
同样使用jQuery,如何获取当前处理click()事件的函数的引用?
原因是我有另一个对象,并希望将其click处理程序设置为与#id相同的那个。
感谢您提出的所有建议。问题是我不知道当前正在处理点击的功能。跟踪它会将状态添加到已经很复杂的模板编辑系统中。
答案 0 :(得分:5)
jQuery的.click(function)
方法将函数添加到在click事件上执行的队列〜
所以实际上拉出对给定函数的引用可能比你想象的要毛茸茸。
正如其他人所指出的,最好传递对该功能的引用;然后你已经拥有了你需要的参考资料。
var clicky = function () { /* do stuff */ };
$('#id').click(clicky);
// Do other stuff with clicky
如果你真的需要把它拿出来,试试这个:
jQuery._data(document.getElementById('id')).events.click[0].handler
取决于您的jQuery版本可能会或可能不会工作〜尝试使用
jQuery._data(document.getElementById('id'))
看看你得到了什么。
从源的这一部分得到了想法:
https://github.com/jquery/jquery/blob/master/src/event.js#LC36
答案 1 :(得分:0)
如果您不知道可以使用的功能的名称
args.callee
https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope/arguments/callee
function clickHandle(e){
if($(e.target) == $('#id')) {
$(newTarget).bind('click', clickHandle);
}
}
$('#id').bind('click',clickHandle);
我认为这是解决问题的最常用方式