2012-11-02 60 views
7

隱藏一個隱藏元素有多糟?隱藏元素...多麼糟糕?

因此,我們假設元素#myelement已隱藏,並且我執行了$('#element').hide()。那不好嗎?我應該檢查它是否首先可見?

謝謝!

+1

這不好顯示塊元素! :)如果你在談論一個唯一的元素....不要打擾。客戶正在等待。 –

+0

爲什麼要隱藏隱藏的元素?那是什麼目的? – Vucko

+0

@ Vucko:不是故意的。只是爲了避免代碼複雜化(使用避免重複隱藏的必要邏輯)。 – Thilo

回答

14

jQuery的檢查,如果該元素是可見的,隱藏只有當它的可見:https://github.com/jquery/jquery/blob/master/src/css.js#L78

} else if (!values[ index ] && !isHidden(elem)) { 
     jQuery._data(elem, "olddisplay", curCSS(elem, "display")); 
    } 

所以你不要需要執行額外的檢查。任何手動檢查都會使性能(和實際可讀性)變差。

0

如果您隱藏已經隱藏的元素,則不會發生任何事情。

「壞」的唯一方法是它正在執行不需要執行的代碼。

如果使用隱藏你可以檢查是():

if(!$("my-element").is(":visible")) { 
    $("my-element").hide(); 
}) 
+1

然而,這導致其他代碼被執行,不需要(檢查代碼)。 – Thilo

+0

是真的,但這個檢查代碼可能比jQuery的內部檢查代碼少...?將必須描述他們兩個以確保:) – danwellman

+0

在大概更頻繁的情況下(該元素實際上需要隱藏),*兩個*檢查將運行。 – Thilo

0

僅供hiding你不需要檢查元素是否已經hidden或沒有,但如果你有一個像的情況下如果該元素則表明做其他別的事情,那麼你可以使用元素

if ($('your-element').is(':hidden')) { 
$('your-element').show(); 
} else { 
//do something else 
} 
1

如果

$("my-element").hide(); 

if(!$("my-element").is(":visible")) { 
    $("my-element").hide(); 
}) 
之間的選擇

爲了便於閱讀,它只有第一行更簡單(更好?)。 jQuery將會檢查你是否執行該操作。

+0

看起來@zerkms已經說過同樣的事情。 **我認爲應該**真的點擊那個加載新答案鏈接。 – Abhilash

0

最好在隱藏元素之前檢查元素的可見性。

$('#element').hide(); 

它會在Internet Explorer(IE9)中導致一些問題。有些時候頁面無法正常加載。有些內容將會從頁面中遺漏。

以下代碼更好。

if(!$("#myelement").is(":visible")) { 
    $("#myelement").hide(); 
})