在运行一些外部JavaScript后,事件不会被触发。我的事件是动态附加的,例如:
$("document").on("whole lot of of events", "#some.selector", doStuffFunction() {});
基于检查:
getEventListeners(node);
我认为事件是从外部JavaScript(某些日历插件)中的某个元素中删除的,我有理由相信它可能是由于在此过程中调用了“off”函数。
有没有办法检测何时调用某个特定函数,以便我可以“覆盖”外部函数?
答案 0 :(得分:1)
我认为事件是从外部JavaScript(某些日历插件)中的元素中删除的......
如果您已经确认它确实正在删除盲人$(document).off("the events")
或类似的处理程序,哇,我会停止使用该日历。
没有内置通知。尽管monkeypatch off
很容易,并重新附加你的处理程序:
var off = jQuery.fn.off;
jQuery.fn.off = function() {
var result = off.apply(this, arguments);
if (this === document) {
// Re-attach your handlers
}
return result;
};
或者,当它影响你的处理程序时,完全阻止对真实off
的调用,但重新附加可能更简单。
显然,您必须在日历插件代码之前运行的代码中执行此操作。
另一种选择是编辑插件的代码以向其所有事件添加命名空间,因此off
调用不会影响您的处理程序。 (甚至可以将其作为拉取请求反馈给插件作者。)