我使用.length
方法在條件語句是輪詢頁面的外部裝載的物品的存在(直到它的存在,我不能用jQuery風格吧):如何檢查元素的存在?
function hackyFunction() { if($('#someObject').length<1) { setTimeout(hackyFunction,50) } else { $('#someObject').someMethod() }}
是length
這樣做的最好方法嗎?
我使用.length
方法在條件語句是輪詢頁面的外部裝載的物品的存在(直到它的存在,我不能用jQuery風格吧):如何檢查元素的存在?
function hackyFunction() { if($('#someObject').length<1) { setTimeout(hackyFunction,50) } else { $('#someObject').someMethod() }}
是length
這樣做的最好方法嗎?
是的,你應該使用.length
。你不能使用if ($('#someObject')) ...
,因爲jQuery selectors返回一個jQuery對象,並且任何對象在JavaScript中都是真的。
是的,.length
是可以接受的,通常是我使用的。
如果你只是尋找一個特定的元素,你可以只使用document.getElementById
function hackyFunction() {
if (document.getElementById("someObject")) {
// Exist
} else {
// Doesn't exist
}
}
如果你正在尋找一個ID只存在應該永遠是其中的一個,所以你也可以這樣寫:
if($('#someObject')[0])
使用jQuery,檢查長工作正常。
if (!$('#someObject').length) {
console.log('someObject not present');
}
當然與香草的JavaScript,你可以用document.getElementById
檢查(如果按id獲取元素)
if (document.getElementById('someObject')) {
console.log('someObject exists');
}
+1好老香草JS) – Andreas 2010-10-10 13:50:25
我不同意。如果你對一個元素進行了多重檢查,那麼這個腳本將會被gEBI函數填充,如果你已經*了包括整個** jQuery庫,那麼這個函數就沒用了。更不用說,在那個特定的片段中,你必須調用它兩次,除非你沒有在'if..else'之前緩存它。如果你在整個地方使用gEBI,你必須記住要包裝jQuery,或者除非你調用原型方法,否則它們將不會被定義。 – 2010-10-10 13:53:11
你是絕對正確的,但是... ^^在TO的代碼片段中有兩個爲相同元素調用的jquery對象。 TO也選擇了'javascript'標籤。爲此,vanilla-js解決方案是絕對合適的。 – Andreas 2010-10-10 14:54:31