使用jQuery获取当前事件处理程序的值

时间:2012-01-31 20:04:04

标签: javascript jquery html

我可以通过调用

来使用jQuery设置onclick处理程序
$('#id').click(function(){
   console.log('click!');
});

同样使用jQuery,如何获取当前处理click()事件的函数的引用?

原因是我有另一个对象,并希望将其click处理程序设置为与#id相同的那个。

更新

感谢您提出的所有建议。问题是我不知道当前正在处理点击的功能。跟踪它会将状态添加到已经很复杂的模板编辑系统中。

2 个答案:

答案 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);

我认为这是解决问题的最常用方式