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