2011-04-06 61 views
3

我需要把動態內容放在一個使用JavaScript腳本的div上。這個div位於頁面的頂部,因此它會在其下面的其他東西之前加載。那裏有很多東西。所以,當我將腳本放在ready()或onload上時,div將在2秒-3秒內爲空,同時顯示其他內容。所以,我試着把onload或ready()放到這個div上。onload和Jquery ready()。他們是否在任何DOM上工作?如表或div?

//example div, which is on the header part of the page 
<div id="cont1"> 
something goes here 
</div> 
//... and there are a lot of other things going down here. 

我試圖把onload="alert('test')"的div標籤

<div id="cont1" onload="alert('test')"> 

也jQuery的方法

<script> 
$("cont1").ready(function(){ 
    alert("test"); 
}); 
</script> 

這兩種方法都不奏效,因爲警報後,才觸發整個頁面顯示。

但是,如果我在關閉上述div後立即將alert("test");腳本正常工作(因爲在顯示警報時頁面上的其他內容尚未顯示)。

<div id="cont1"> 
something goes here 
</div> 
<script> 
    alert("test"); 
</script> 

但是這種方法是一種糟糕的設計是不是?那麼,有沒有其他的方式來實現這一目標

+0

你爲什麼試圖把onload/ready事件放在div上? – RandomWebGuy 2011-04-06 01:55:26

+0

我需要在這個div上使用一些腳本來放置一些動態內容。以前我把腳本放在body上。但它非常慢,因爲身體只會在2-3秒後完成加載。所以,它看起來好像這個div負載的內容很慢。我將編輯我的問題 – Sufendy 2011-04-06 01:59:39

回答

2

onload和「準備好」的元事件適用於整個DOM文檔,而不僅僅是任何DOM節點,這正是您在此嘗試的。

對於需要DOM存在的代碼,我會堅持使用jQuery的$(document).ready(...)

0

onload不幸的是在window只。

但是,我寫了一個名爲waitForImages的jQuery插件,它將在圖像加載到任何容器內時觸發回調。

3

如果你想有一個特定的DOM元素加載後的JavaScript動作射擊,只需將它放在元素後,正如你指出:

<div id="cont1"> 
something goes here 
</div> 
<script> 
    alert("test"); 
</script> 

有些人可能不同意,但是這是不壞的設計。只要在這個腳本中發生的任何事情只涉及HTML文檔中出現的元素,一切都應該是潔淨的。 DOM按其在文檔中出現的順序線性加載,所以不會出現#cont1之後的腳本會在#cont1之前出現的情況。如果腳本很長,可以將它放在一個頭文件中的函數中,然後調用那個函數。

+0

「準備就緒」旨在規避這種行爲。所以,如果這是你想要的行爲,不要使用「就緒」功能。好的解決方案,請記住,儘管它會暫停頁面下載,直到腳本運行完畢。 :-) – Slappy 2011-04-06 02:39:00

+1

是的。 '$(document)的唯一問題。ready()'是它等待所有東西被解析,有時可能會導致非微不足道的延遲。 – smdrager 2011-04-06 02:40:25

+1

+1雙負片。 – Slappy 2011-04-06 02:42:00

-1

這是有點半途,但你可以有一個單一像素的顏色作爲背景在div的末尾,並在img上有一個onload。

+1

請更具描述性,甚至給出代碼總是更好。 :) – Amar 2012-12-14 21:49:03

相關問題