javascript - 具有排序功能的 MutationObserver 中的无限循环
问题描述
MutationObserver 检测 notifyDiv div 何时发生变化。之后,另一个函数做出正确的顺序。但这最终会导致 div 发生新的变化,并进入一个无限循环。
var target = document.querySelector('.notifyDiv');
var observer = new MutationObserver(function(mutations) {
var divList = $(".notifyItem");
divList.sort(function(a, b){
return $(b).data("id")-$(a).data("id")
});
$(".notifyDiv").html(divList);
});
解决方案
嗯...为方便起见,我隐藏了 notifyDiv div 并创建了另一个相同的名为 notifyDivShow 的,所以当重新排序 notifyDiv 时仅在 notifyDivShow 中显示结果。
var target = document.querySelector('.notifyDiv');
var observer = new MutationObserver(function(mutations) {
var divList = $(".notifyItem");
divList.sort(function(a, b){
return $(b).data("id")-$(a).data("id")
});
$(".notifyDivShow").html(divList);
});
div
<div class="notifyDiv" style="display: none;"></div>
<div class="notifyDivShow"></div>
推荐阅读
- python - Python对具有浮点值的关联数组进行排序
- hyperledger - 在 Composer 中查询数组概念
- python - 从文件中绘制 numpy 数据
- npm - Webpack 4 引用 npm 供应商脚本
- java - Java蛮力程序没有在正确的密码上停止
- android - 我应该使用什么方法在任何类中共享复杂对象
- firebase - Firestore 规则使用 Flutter 客户端验证时间戳
- bookdown - 如何激活 bookdown 的 book-wide 或 page-local 搜索
- java - FXML:替代用途
- angular - 创建组件时出现意外的令牌功能