2012-08-10 170 views
2

我的頁面有一個提示框,顯示在沒有條目顯示。當一個新的輸入是通過AJAX加入我刪除這個元素用一個簡單的:在刪除元素之前檢查元素的存在是否更好?

$('#empty-alert').remove(); 

我在想:當我添加以下項我只需再次不管調用此方法的元素存在與否。首先檢查存在是否更好,如果存在,請致電remove()?像:

if($('#empty-alert').length){ 
    $('#empty-alert').remove(); 
} 

或者是當元素確實存在,並第一個想法就是已經檢查存在,在一個調用中刪除這只是額外的工作?

+0

如果你打算做第二個選項,那麼你應該把'$('#空警戒的結果')'變成一個變量,然後用它來檢查長度並刪除。 – row1 2012-08-10 08:06:08

回答

8

作爲參考,從我的理解相當寬鬆的條件:

$()選擇在jQuery的總是返回一個jQuery集合。如果沒有匹配元素,則集合爲空。

當你調用一個函數,如remove()上一個jQuery集合,它實際上通過收集迭代在它的每個元素上執行的操作。如果集合是空的,它將永遠不會迭代,因此在這種情況下從不會調用任何元素上的remove()

例如,使用這種情況下:

$('#empty-alert')或者返回的["#empty-alert jQuery object"][](空數組)的集合;

調用一個.remove()被有效做這樣的事情在幕後:

//jqCollection is one of the arrays previously mentioned 

jqCollection.each(function(){ 
    this.remove(); //'this' is a single jQuery object from the jqcollection 
}); 
+0

謝謝你的解釋和獎金點幕後看看:)聽起來就像是額外的檢查的確會 - 我想 - 火存在的不必要的查找。 – 2012-08-10 10:49:45

2

或者當元素確實存在並且第一個想法已經檢查存在並在一次調用中刪除時,這只是額外的工作嗎?

在非現有元素上調用remove()不會導致錯誤,因此您可以在沒有元素存在檢查的情況下使用它。

0

閱讀文檔http://api.jquery.com/remove/如果你需要做這個檢查,他們會告訴你這一點。

+0

謝謝,但我不想知道我是否需要*檢查,如果它是有用的或只是額外的工作,則更多。 – 2012-08-10 10:51:23