Javascript 如果选择器存在-运行代码,否则重复检查
我试图检查选择器是否存在,如果存在,我希望它运行一些代码,如果不存在,我希望它重复检查 我之所以想这样做,是因为我知道一个元素将存在,但我不知道什么时候 大概是这样的:Javascript 如果选择器存在-运行代码,否则重复检查,javascript,jquery,Javascript,Jquery,我试图检查选择器是否存在,如果存在,我希望它运行一些代码,如果不存在,我希望它重复检查 我之所以想这样做,是因为我知道一个元素将存在,但我不知道什么时候 大概是这样的: if ($(.element).length ) { // Do something }else{ //check again }); 有什么想法吗 var interval = setInterval(function () { if ($(".youtube5player").length) {
if ($(.element).length ) {
// Do something
}else{
//check again
});
有什么想法吗
var interval = setInterval(function () {
if ($(".youtube5player").length) {
clearInterval(interval);
// Do stuff
}
}, 100);
它的作用是大约每100毫秒执行一次检查,以查看选择器是否返回任何结果。如果是,则清除间隔,代码将不再运行
示例:除了使用,还可以使用递归setTimeout模式,如下所示:
(function doCheck(){
setTimeout(function(){
if ($(.element).length ) {
// Do something
}else{
//check again
doCheck();
});
}, 100);
})();
虽然在您的情况下似乎不太可能看到,但有时使用setInterval被认为是有害的。从:
如果您的逻辑可能需要更长的时间才能执行
与间隔时间相比,建议递归调用
使用window.setTimeout命名函数。例如,如果使用
setInterval每5秒轮询一个远程服务器,网络延迟,
没有响应的服务器和大量其他问题可能会阻止
请求在分配的时间内完成。因此,你可能会发现
您自己的XHR请求排队,但不一定返回
秩序
对于这种情况,首选递归setTimeout模式
与其他方法不同,递归方法也会慢慢在内存中建立一个巨大的调用堆栈。ECMAScript 6有尾部调用优化,但ECMAScript 4没有。