【发布时间】:2013-05-03 21:48:19
【问题描述】:
有一个对链接点击事件的回调实现。我无法更改或删除此代码。
我想在有人单击按钮时调用该链接的单击事件回调(例如)。所以我决定使用.trigger('click')。它工作正常。
但是现在,当用户单击链接时,我不希望发生任何事情。我正在考虑使用.unbind(),但这样做会使.trigger('click') 不起作用,因为链接已解除绑定。
所以基本上,我想“重用”链接点击事件的回调,而无需复制粘贴代码。我该怎么做?
【问题讨论】:
-
即使您无法更改或删除此代码,您也可以将其提供给我们以了解实际情况;)
-
我从来没有试图找到一个已经附加的事件处理程序,但我想你可以做到。获取存储在某处的函数引用,然后取消绑定事件。您可以使用 jQuery
data()来“查找”现有的事件处理程序。 stackoverflow.com/questions/12214654/… -
没有使用 jQuery 完成此任务的文档化方法,我建议您更多地研究您正在使用的插件,看看您是否可以获得对定义它的事件处理程序的引用在插件中。
-
如果不改变原来的点击事件处理程序,你不能让它与 trigger() 一起工作,而不是与用户点击一起工作。在点击事件处理程序中,您可以区分两者,但您也可以复制粘贴函数本身并使用它而不是触发点击。
-
如果您可以在您尝试停止的事件之前将点击事件绑定到所述元素,您可以使用
event.stopImmediatePropagation()api.jquery.com/event.stopImmediatePropagation 停止它,如果说不可更改的代码,这显然不起作用创建元素。 jsfiddle.net/K7Rgc/5
标签: jquery