我有一个来自外部源的基于 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/