2011-10-27 46 views
3

我有一個關於jQuery隱藏功能的一般查詢。我環顧四周,似乎找不到直接的答案。我想知道在頁面加載時隱藏的對象是否仍然加載,然後隱藏或隱藏,然後在調用觸發器時加載。另外,如果這些對象被加載,是否有任何函數只會在被觸發時加載隱藏元素?jQuery隱藏功能

+1

這取決於你在哪裏叫它。 – alex

+0

讓我擴大。我有一個特定的div顯示某些項目。我在頁面加載時在div中隱藏了項目,並且一旦div使用jquery按鈕調用進行擴展,隱藏元素將顯示在放大的div中。這些項目是否仍然在後臺加載,即使認爲它們隱藏着hide()? – user981053

+0

如果你準備好文檔,它將足夠有趣,首先在DOM加載後隱藏它。顯示:無(這是隱藏功能基本上是這樣做的)dosent限制內容從被加載 - 僅從可見。因此,您應該執行過濾服務器端,或者在負載中使用JS添加它。 –

回答

6

如果您在$(document).ready()的內部調用.hide(),那麼該元素將從服務器原樣加載,然後在頁面完全加載後隱藏。

這可能會導致'閃現' - 在頁面加載時看到元素出現,然後在加載頁面後消失。防止這種情況的最好方法是確保它是由服務器以display:none;的樣式渲染的,前提是它最初是隱藏的。

請注意,.show().hide()不會影響DOM中存在哪些元素 - 即哪些元素已加載。相反,它們控制頁面加載後項目的可見性。

如果你真的想動態加載頁面的某些部分,那麼你需要使用jQuery的DOM操作方法來向頁面添加新的元素來響應某些事件。

0

我不確定我是否理解,要用jQuery隱藏某些東西,它必須已經加載到頁面中,除非您從javascript創建它。 「加載」意味着什麼,添加到DOM?

0

我認爲你用jQuery.hide函數隱藏的對象的內容總是被加載。因爲首先你的網頁將被加載,之後JavaScript將被執行。當你只想要顯示的內容被加載時,你應該做一個Ajax調用加載的內容或設置div初始值爲display: none

1

撇開已經給出的答案。

如果您使用jquery hide()來隱藏元素,那麼如果用戶關閉了javascript,則會顯示元素 - 因爲hide()不會發生。如果功能或者顯示或隱藏的需要受到javascript的缺失影響,那麼它是處理場景的好主意。一些示例CSS類。

.hide-if-no-js {display:none;} 
.show-if-no-js {display:block;} 
.hide {display:none;} 

然後你就可以應用到元素,這取決於您是否要顯示或隱藏最初的元素 - 不管的JavaScript是否可用。

隱藏,如果JS是不可用,隱藏,如果JS可用:

<div id="aaa" class="hide-if-no-js">...</div> 

展是JS是不可用的,隱藏如果JS可用:

<div id="aaa" class="show-if-no-js">...</div> 
$("#aaa").removeClass("show-if-no-js").addClass("hide");