我想檢查選擇器是否存在,如果它是我想要它運行一些代碼,如果它不是我想重複檢查。如果選擇器存在 - 運行代碼其他重複檢查
我想這樣做的原因是因爲我知道一個元素將存在,但我不知道什麼時候。
事情是這樣的:
if ($(.element).length) {
// Do something
}else{
//check again
});
任何想法?
我想檢查選擇器是否存在,如果它是我想要它運行一些代碼,如果它不是我想重複檢查。如果選擇器存在 - 運行代碼其他重複檢查
我想這樣做的原因是因爲我知道一個元素將存在,但我不知道什麼時候。
事情是這樣的:
if ($(.element).length) {
// Do something
}else{
//check again
});
任何想法?
var interval = setInterval(function() {
if ($(".youtube5player").length) {
clearInterval(interval);
// Do stuff
}
}, 100);
這樣做是使用setInterval
執行檢查大約每100毫秒,看看你的選擇返回任何結果。如果是,則間隔被清除並且代碼不會再次運行。
除了使用setInterval你也可以使用像一個遞歸的setTimeout模式如下:
(function doCheck(){
setTimeout(function(){
if ($(.element).length) {
// Do something
}else{
//check again
doCheck();
});
}, 100);
})();
雖然它似乎沒有可能在你的情況看有次在那裏使用setInterval被認爲是有害的。從documentation:
如果有你的邏輯可能需要更長的時間來執行 比間隔時間的可能性,建議你使用遞歸調用window.setTimeout一個名爲 功能。例如,如果使用 setInterval每5秒查詢一次遠程服務器,網絡延遲, 服務器不響應,以及其他一系列問題可能會阻止請求在其分配的時間內完成。因此,您自己可能會發現 排隊的XHR請求不一定會以 的順序返回。
對於這種情況,一個遞歸的setTimeout圖案優選
遞歸方法也將慢慢在不同於其他方法存儲器建立龐大的調用堆棧。 ECMAScript 6有Tail Call優化,但ECMAScript 4沒有。 – Mir