防止 jQuery 突变被执行两次

Prevent a jQuery mutation from being executed twice

单击按钮后触发突变时,我必须在 jQuery 中执行两个函数:

 function mutate(mutations) {
     mutations.forEach(function(mutation) {
         function1().done(
             function2()
         );
     });
  }

 var target = document.querySelector('#identifier')
 var observer = new MutationObserver( mutate );
 var config = { characterData: false, attributes: false, childList: true, subtree: false };
 observer.observe(target, config);

代码运行正常,但我原以为当我点击一个特定的按钮时,突变只会被触发一次;但由于某种原因,突变发生了两次,然后代码也被执行了两次。我无法修改触发突变的代码,所以我只能修改突变处理(上面的代码)。

有什么办法可以避免每次执行两次?我应该使用不同的方法而不是 forEach,但是是哪个?

提前致谢

我找到了一个解决方案:当我单击按钮时,一个节点被删除并突然重新创建。这就是为什么我有两个突变。

我添加了一个 if 以确保仅在重新创建节点时才进行调用

function mutate(mutations) {
     mutations.forEach(function(mutation) {
         if(mutation.addedNodes.length > 0 && mutation.removedNodes.length == 0) {
             function1().done(
                 function2()
             );
         }
     });
}