2012-09-21 83 views
2

存在我最近寫的是做了一個簡單的顯示/隱藏操縱無序列表一個小腳本。何時以及爲什麼要檢查元素是否與jQuery

從我的理解,如果有問題的元素存在(因此,如果是「真」)jQuery將只執行一個功能。所以沒有實際的理由來檢查元素的長度是否大於0,是否有一個父節點是body,等等。正確?

如果以上是準確的,當實際上這樣的檢查是有幫助的?

http://jsbin.com/ehicik/1/edit

回答

2

如果要執行可以級聯到錯誤,如果一個元素不存在的行動,這將是有幫助的首先做一個檢查。一些相當微不足道的東西(如show/hide)可能不會保證檢查。

(雖然這是良好的編程習慣,以確保一切按預期工作,並優雅地失敗。檢查將有助於利用,或至少一個try ... catch語句。)

+0

謝謝,你有這樣一個可以級聯到錯誤的行動的快速例子嗎? –

+0

淡入淡出另一個不存在的元素......第二個元素永遠不會出現;)對於較小的應用程序而言,這很簡單,但是當您開始鏈接事件並變得越來越複雜時,最好徹底。 – MassivePenguin

0

這取決於如何重要這是你/你的腳本,該元素實際存在。假設腳本的其餘部分取決於您需要從元素中檢索的某些數據,並且該元素不存在,那麼您需要了解它的行爲。在這種情況下,支票顯然非常有用。

在一個簡單的顯示/隱藏的情況下,這方面的需要可能是最小的。

0

這裏長度屬性將返回已通過$('#id')選定元素的個數。 如果它返回零,那麼它意味着沒有項目匹配或選擇。

<script> 
     $(document).ready(function() { 
      alert($('#id').length); 
     }); 
</script> 
+0

他知道,只是不確定這樣的檢查是多麼有用。 – Asciiom

3

這是正確的,jQuery只會嘗試調用方法,如果它存在。

但是使用:

if($("#someElement").length) { ... Do Stuff }; 

可以是非常有用的,如果你正在做的jQuery和JavaScript的混合 - 我發現你經常不能使用jQuery實現的一切,如果你嘗試,你會得到腳本錯誤對不存在的對象執行JavaScript操作。

例如,我希望從「結算地址」複製「送貨地址」 - 但如果產品可以運送,我的頁面只會呈現「送貨地址」(下載的產品不需要送貨) - 因此我檢查「送貨地址「在jQuery做任何進一步的工作之前就已經存在了。

這只是一個粗略的例子,我很欣賞你可能只是不渲染jQuery的按鈕,以及 - 也就是說,如果你有一箇中央.js文件,它更相關,因爲你可能有一些比較通用的JS,將嘗試並在每個頁面上運行。

所以那個時候我會檢查現有的對象。

相關問題