javascript - 比 `setTimeout` 和 `.length` 更好的检查元素是否存在的方法
问题描述
目前我有一个函数可以在动态生成元素后单击它,问题是我正在使用这样的东西:
if($('#element').length){
$('#element').click();
} else {
setTimeout(function(){
$('#element').click();
}, 500);
}
我一直调用这个函数,直到元素出现。有没有更好的方法来继续检查元素是否出现?我尝试使用循环,但最终以无限循环使浏览器崩溃
解决方案
您可以使用 Mutation Observer API 来检查何时添加了元素。
var callback = function(mutations) {
// check the mutations and perform whatever you wish to do
}
var observer = new MutationObserver(callback);
// provide the node that you wish to observe for mutations and the configuration to use
observer.observe(<targetNode>, <config>);
...
...
observer.disconnect();
编辑:添加小提琴作为示例,其中每个动态添加的段落在添加到 DOM 时都会作为警报回显。
推荐阅读
- sql - 查找具有特定祖先的叶节点
- python - 如果前一个字母和下一个字母是小写字母,则使用正则表达式删除大写字母?
- javascript - #using-memoizing-selectors 示例中的 `_` 是什么
- reactjs - 配置在哪里。这个 Firebase 和 React 应用程序有问题吗?
- vba - 如何使复选框控件元素引用自身
- c++ - C++中动态数组的赋值运算符
- intellij-idea - Intellij IDEA 中的哈巴狗支持
- c++ - Good() 和 fail() 理解
- reactjs - React - Firebase _ 错误:名为“[DEFAULT]”的 Firebase 应用程序已存在
- java - 比较器使用 nullsFirst 对用户定义的对象进行排序