javascript - 在外部 javascript 中检测 jQuery off()

标签 javascript events

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

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

基于检查:

getEventListeners(node);

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

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

最佳答案

I assume that event's are being removed from the element somewhere within external JavaScript (some calendar plugin)...

如果您已验证它确实使用盲目的 $(document).off("the events") 或类似内容删除了您的处理程序,我会停止吗使用该日历。

没有内置通知。不过,猴子修补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 调用不会影响您的处理程序。 (也许甚至可以将其作为拉取请求反馈给插件作者。)

关于javascript - 在外部 javascript 中检测 jQuery off(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48901997/

相关文章:

c# - 在 C# 中使用 Lambda 的一次性事件

javascript - 指针事件 IE11/Surface

javascript - 如何循环遍历 JSON 数组直到满足条件?

javascript - 在 WordPress 用户数据库中存储 Javascript 对象

javascript - 如何根据具有不同前缀的其他字符串重命名字符串?

javascript - 在 Javascript 中获取 URL

javascript - 如何在 JavaScript 中实现锁

javascript - 将事件和参数传递给另一个函数

PHP 捕捉 cURL CURLOPT_TIMEOUT 和 CURLOPT_CONNECTTIMEOUT 事件并采取行动

javascript - 我如何改进这个 Javascript,以便将事件附加到页面中的所有元素?