检查div是否存在-如果不存在-再次检查直到创建

丹尼斯·莫尼

我有一个由插件创建的div,并在页面呈现后出现(总是在不同的时间)。

我需要检查此div是否存在,然后执行一组函数。但是,如果尚不存在,我要等到它出现后再执行该功能集。

这是我现在正在使用的:

var check = setInterval(function(){
  if ($('#target-div').length){
    console.log('execute set of functions')
    clearInterval(check);
  }
}, 100);

但是,有没有一种方法可以永久检查div是否退出(例如在后台运行它或在其他地方运行),并在创建后立即退出-停止但不退出setInterval

因为我进行了多次类似的检查,因此每次必须设置一个新的/不同的setInterval时,情况一团糟。

谢谢。

罗里·麦克罗森(Rory McCrossan)

不要使用DOM轮询来进行此操作,因为这是一种反模式。请改用突变观察者这是一个侦听器,可以将其设置为在对DOM进行某些更改时触发。子节点或属性修改。试试这个:

var $div = $("#container");

new MutationObserver(function(mutations) {
  console.log('.foo was appended');
}).observe($div[0], {
  childList: true
});

setTimeout(function() {
  $div.append('<div class="foo">foo</div>');
}, 2000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  Appending an element in 2 seconds...
</div>

请注意,这是一个非常基本的示例。您可以通过MutationObserver()任何所需的方式调整提供的处理程序功能,因为该mutations参数提供了有关刚刚发生的更改的大量信息。

有关更多信息,请参见上面的MDN文档链接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查目录是否存在,如果不存在则创建

检查文件是否存在,如果不存在则创建它

检查文件是否存在,如果不存在则显示特定的div

VBA检查目录是否存在,如果存在退出子,否则不存在,创建

检查表是否存在,如果不存在,请在SQL Server 2008中创建表

AngularFire检查值是否存在,如果不存在,则创建它

检查目标目录是否存在,如果不存在则进行创建,然后再进行

检查列表中是否存在用户名,如果不存在则仅创建用户

检查 $tablename 在 SQL Server 2017 中是否存在,如果不存在则创建表 $tablename

PHP 和 MYSQLI 检查用户 ID 是否存在,如果不存在则创建它

如何检查特定的 Azure ARM 资源是否存在,如果不存在,则使用 PowerShell 创建它

检查文档是否存在,如果不存在则创建并添加数据Firebase

如何检查表是否存在,如果不存在则创建表?

检查FTP文件夹是否存在,如果不存在,则创建它

检查ID行是否存在,如果不存在,则创建它

检查集群参数组是否存在,如果不存在则仅使用 terraform 创建

密码查询-检查是否存在关系(如果不存在)检查另一个

检查div是否不存在于javascript中

Shell脚本检查dir目录是否存在然后更改路径,如果不存在则使用该名称创建dir并检查文件名不存在

如果目录不存在,如何创建?

SQLAlchemy:“创建架构(如果不存在)”

雄辩的:如果不存在则创建关系

创建子对象(如果不存在)

HSQL:创建索引(如果不存在)

如果Ruby不存在,则创建目录

mysql创建用户(如果不存在)

Akka:如果不存在则创建演员

创建mysql表(如果不存在)

PostgreSQL:如果不存在,则创建表