从JQuery中的element获取click处理程序

如何在JQuery中获取元素的click处理程序的引用?

这是我想要做的:

存储单击处理程序,更改下一次单击的单击处理程序,还原原始单击处理程序

var originalClick = $(settings.currentTarget).click; $(settings.currentTarget).off("click"); $(settings.currentTarget).click(function (e) { e.preventDefault(); settings.model.modal.close(); $(settings.currentTarget).off("click"); $(settings.currentTarget).click(originalClick); }); 

上面的代码第一次工作,但是,当我再次点击该元素时,它失败了:

  Uncaught TypeError: Object [object HTMLAnchorElement] has no method 'on' 

更新:
我现在意识到这是一个非常糟糕的设计,我正在尝试做。 我通过在viewmodel中维护可见性布尔值来解决这个问题,如果是,则不要重新打开模态。

$(...).click是jQuery click()方法,而不是你的事件处理程序。

您可以使用未记录的内部API来获取事件处理程序列表:

 jQuery._data( elem, "events" ); 

如果以这种方式尝试会发生什么?

  var originalClick = $(settings.currentTarget).click; $(settings.currentTarget).off("click"); $(settings.currentTarget).on("click",function (e) { e.preventDefault(); settings.model.modal.close(); $(settings.currentTarget).off("click"); $(settings.currentTarget).click(originalClick); });