javascript - 防止 jQuery 突变被执行两次
问题描述
单击按钮后触发突变时,我必须在 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()
);
}
});
}
推荐阅读
- php - PHP CRUD 返回 true 但不添加到数据库
- linux - Alpine Linux 上的 Valgrind
- cassandra - 由于大型墓碑扫描,如何避免 Cassandra 读取失败?
- git - Git - 如何在 2 次推送之间恢复不正确的代码
- python - reg ex 模式@+ 单词,如果@@ 在单词之前,则不包括大小写
- javascript - 搜索内容后点击事件无响应
- java - 对字节数组的 ArrayList 进行排序
- .net - 带有单个任务的异步 OnNext
- facebook-graph-api - Facebook Graph API - 实时观看者峰值指标?
- docker - 无法访问使用 docker 工具箱运行的 docker 容器内的 postgres 数据库