Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测未来元素是否存在并执行某些操作_Javascript_Jquery - Fatal编程技术网

Javascript 检测未来元素是否存在并执行某些操作

Javascript 检测未来元素是否存在并执行某些操作,javascript,jquery,Javascript,Jquery,我使用了一个插件,它将在我的DOM中创建新元素,但不幸的是,它在插件初始化后没有回调。因此,我正在考虑捕获新创建的DOM并执行某些函数。聆听未来元素的最佳方式是什么 我试过两种方法 使用setTimeout 这种方法的缺陷在于,假设每个用户都能够以相同的加载时间启动插件是非常危险的 使用livequery插件() 这项工作很有效,但对表演不利。在我抓住即将到来的新元素后,它仍然运行 我怀疑您正在使用的插件没有回调功能,但是如果您确实想检查DOM中是否有元素,可以选择该元素(例如,按id/类),并

我使用了一个插件,它将在我的DOM中创建新元素,但不幸的是,它在插件初始化后没有回调。因此,我正在考虑捕获新创建的DOM并执行某些函数。聆听未来元素的最佳方式是什么

我试过两种方法

  • 使用setTimeout 这种方法的缺陷在于,假设每个用户都能够以相同的加载时间启动插件是非常危险的

  • 使用livequery插件() 这项工作很有效,但对表演不利。在我抓住即将到来的新元素后,它仍然运行


  • 我怀疑您正在使用的插件没有回调功能,但是如果您确实想检查DOM中是否有元素,可以选择该元素(例如,按id/类),并检查它是否已经存在:

    function checkIfThere() { 
      if ($('.yourEl').length > 0) console.log("There it is!");
      else setTimeout(checkIfThere, 100); // recall the function until it is in the DOM
    };
    

    通过这种方式,您可以指定超时时间,以便在每次未加载元素时调用函数,直到加载为止。

    是否只将处理程序函数附加到尚未创建的DOM元素上的事件,例如单击执行某项操作或类似操作?@JohnIdol,可以使用on()完成,但是在我的例子中,我必须做一些其他的事情。所以你想检测新元素何时被附加到DOM中,对吗?@JohnIdol-yes。“没错!”詹姆斯莱蒙很乐意帮忙!