检测未来元素是否存在并做某事

时间:2015-04-05 13:26:51

标签: javascript jquery

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

我尝试了2种方法

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

  2. 使用livequery插件(https://github.com/brandonaaron/livequery) 这项工作但对表演不利。它在我抓住新的元素之后仍然运行。

1 个答案:

答案 0 :(得分:2)

我怀疑你使用的插件没有类似回调的东西,但如果你真的想检查一个元素是否在DOM中,你可以选择那个元素(例如通过id / class)并检查它是否已存在:

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

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