Javascript 防止jQuery变异执行两次

Javascript 防止jQuery变异执行两次,javascript,jquery,mutation-observers,Javascript,Jquery,Mutation Observers,当单击按钮后触发突变时,我必须在jQuery中执行两个函数: function mutate(mutations) { mutations.forEach(function(mutation) { function1().done( function2() ); }); } var target = document.querySelector('#identifier') var observer =

当单击按钮后触发突变时,我必须在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()
             );
         }
     });
}

如果看不到DOM中发生了什么变化,很难说,但是在执行逻辑之前,您可以准确地检查突变是什么(例如,研究
mutation.type
属性)。这将帮助您过滤不需要的事件。