如果选择器存在-运行代码,否则重复检查

If selector exists - run code else repeat check

本文关键字:检查 代码 选择器 存在 运行 如果      更新时间:2023-09-26

我试图检查选择器是否存在,如果它存在,我希望它运行一些代码,如果它不存在,我希望它重复检查。

我想这样做的原因是因为我知道一个元素将存在,但我不知道何时存在。

像这样:

if ($(.element).length ) {
    // Do something
}else{
//check again
});

任何想法?

var interval = setInterval(function () {
    if ($(".youtube5player").length) {
        clearInterval(interval);
        // Do stuff
    }
}, 100);

这样做的是使用setInterval大约每100毫秒执行一次检查,以查看选择器是否返回任何结果。如果是,间隔将被清除,代码将不再运行。

例子: http://jsfiddle.net/rBdFP/

除了使用setInterval之外,还可以使用递归setTimeout模式,如下所示:

(function doCheck(){
    setTimeout(function(){
        if ($(.element).length ) {
            // Do something
        }else{
            //check again
            doCheck();
        });
    }, 100);
})();

虽然在你的情况下似乎不太可能看到有时使用setInterval被认为是有害的。来自文档:

如果您的逻辑可能需要更长的时间来执行比间隔时间,建议递归调用使用window.setTimeout。例如,如果使用setInterval每5秒轮询一个远程服务器,网络延迟,无响应的服务器和许多其他问题可能会阻止要求在规定时间内完成。因此,你可能会发现让您自己处理排队的XHR请求,这些请求不一定会返回秩序。

对于这种情况,首选递归setTimeout模式