javascript - 寻找 Javascript/jQuery 事件触发器

标签 javascript

我有一个来自外部源的基于 javascript 的菜单生成器。菜单功能通过绑定(bind)到特定 ID 的点击事件发生……非常标准。

我想做的是在点击事件触发的 AFTER 上对 DOM 执行另一个操作。

我宁愿不破解菜单包中的代码。

我尝试附加我自己的点击处理程序 - 但没有明显的方法来确保我的点击处理程序在菜单系统的处理程序之后触发。我考虑的一种方法是将事件基于菜单系统的单击处理程序发生的类的添加/删除。但是 - 我很快发现没有基于元素类更改的事件(据我所知)。

有什么想法吗? (无需破解原始菜单系统的 js)

最佳答案

您可以使用javascirpt Mutation Observer ,这是一篇关于该主题的精彩文章:Listening to the DOM changes with MutationObserver

OR 以旧方式

如果我理解,(1) 您可以添加自己的点击事件监听器,(2) 您希望在菜单元素上的类名更改后执行您的代码。

在这种情况下,您可以使用 setInterval 来检查类是否已更改,如果已更改,则触发您的操作。

类似的东西:

myOnClickFunction(){

    var menu = document.querySelector('#MyMenuID');

    var timer = setInterval(() => {

        if(menu.classList.contains('TheClassNameYouWantToCheck')){
            //Clear the interval 
            clearInterval(timer);

            //Execute your actions here

        }

    }, 50);


    //You can also add a maximum checking  time
    //after 5 seconds the function stop checking for changes
    setTimeout(()=>clearInterval(timer), 5000);

}

关于javascript - 寻找 Javascript/jQuery 事件触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58042089/

相关文章:

javascript - JavaScript 库的代码模式

javascript - 预格式化文本以防止回流

javascript - 如何使用 JS 访问元素的属性?

javascript - 移动另一个 div 的 CSS 动画

javascript - javascript在浏览器中触发后退按钮的功能

javascript - 为什么我的 JavaScript 无法创建这个元素?

javascript - 如何获取 Angular 资源返回的数组的第一个元素?

javascript - JS Accordion 在单击链接时保持打开状态

Javascript-如何编写一个函数来查找任何一组数字参数中的最大数字

javascript - JQuery - 如何检查输入是否来自键盘?