2010-10-10 65 views
3

我使用.length方法在條件語句是輪詢頁面的外部裝載的物品的存在(直到它的存在,我不能用jQuery風格吧):如何檢查元素的存在?

function hackyFunction() { 
    if($('#someObject').length<1) 
    { setTimeout(hackyFunction,50) } 
    else 
    { $('#someObject').someMethod() }} 

length這樣做的最好方法嗎?

回答

4

是的,你應該使用.length。你不能使用if ($('#someObject')) ...,因爲jQuery selectors返回一個jQuery對象,並且任何對象在JavaScript中都是真的。

2

是的,.length是可以接受的,通常是我使用的。

7

如果你只是尋找一個特定的元素,你可以只使用document.getElementById

function hackyFunction() { 
    if (document.getElementById("someObject")) { 
     // Exist 
    } else { 
     // Doesn't exist 
    } 
} 
+1

+1好老香草JS) – Andreas 2010-10-10 13:50:25

+1

我不同意。如果你對一個元素進行了多重檢查,那麼這個腳本將會被gEBI函數填充,如果你已經*了包括整個** jQuery庫,那麼這個函數就沒用了。更不用說,在那個特定的片段中,你必須調用它兩次,除非你沒有在'if..else'之前緩存它。如果你在整個地方使用gEBI,你必須記住要包裝jQuery,或者除非你調用原型方法,否則它們將不會被定義。 – 2010-10-10 13:53:11

+1

你是絕對正確的,但是... ^^在TO的代碼片段中有兩個爲相同元素調用的jquery對象。 TO也選擇了'javascript'標籤。爲此,vanilla-js解決方案是絕對合適的。 – Andreas 2010-10-10 14:54:31

2

如果你正在尋找一個ID只存在應該永遠是其中的一個,所以你也可以這樣寫:

if($('#someObject')[0]) 
0

使用jQuery,檢查長工作正常。

if (!$('#someObject').length) { 
    console.log('someObject not present'); 
} 

當然與香草的JavaScript,你可以用document.getElementById檢查(如果按id獲取元素)

if (document.getElementById('someObject')) { 
    console.log('someObject exists'); 
}