在外部javascript中检测jQuery off()

时间:2018-02-21 09:13:48

标签: javascript events

在运行一些外部JavaScript后,事件不会被触发。我的事件是动态附加的,例如:

$("document").on("whole lot of of events", "#some.selector", doStuffFunction() {});

基于检查:

getEventListeners(node);

我认为事件是从外部JavaScript(某些日历插件)中的某个元素中删除的,我有理由相信它可能是由于在此过程中调用了“off”函数。

有没有办法检测何时调用某个特定函数,以便我可以“覆盖”外部函数?

1 个答案:

答案 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调用不会影响您的处理程序。 (甚至可以将其作为拉取请求反馈给插件作者。)