Javascript 防止jQuery变异执行两次
当单击按钮后触发突变时,我必须在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 =
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
属性)。这将帮助您过滤不需要的事件。