2012-02-21 90 views
0

當用戶點擊網頁中的標籤時,該標籤打開並從服務器下載相應的頁面。當網頁下載完成時回調

我想通過Java腳本或jquery在此頁面中添加一些UI。我知道我怎麼可以添加這個,但問題是如果我執行我的Java腳本函數添加用戶界面點擊該選項卡,它不起作用,因爲相應的頁面尚未下載。

基本上,我想知道當頁面完全下載時調用這樣的函數。

+0

能否詳細說明「從服務器上下載相應的頁面」?你在做什麼?使用'$ .ajax()'? – Sinetheta 2012-02-21 05:42:34

+0

是的,頁面使用ajax異步下載 – Vikas 2012-02-21 05:46:11

+0

這還沒有告訴我們很多,如果你使用jQuery的'.ajax()',那麼你必須做一些事情來獲取頁面中的內容。你真的必須在這裏提供一些關於你在做什麼的信息(例如:代碼)。 – Sinetheta 2012-02-21 05:47:48

回答

0

在你的頁面的正文中添加這個..

<body onload="init()"> 

</body> 

基本上你打電話給你init function - 其啓動所有你想要的網頁的正文只加載後其他功能..

+0

下載的一些div元素,實際上,新的html頁面不會下載,只有一組div標籤下載異步 – Vikas 2012-02-21 05:48:23

+0

真的很難猜到這些東西,當你給我們沒有信息。提供一個鏈接,一個jsfiddle或源代碼 – Sinetheta 2012-02-21 05:49:08

+0

@vikas提供你的代碼..很難猜到你在做什麼..如果你通過ajax來做 - 有一些叫做「onreadystatechange」事件 - 它改變了'readyState' - 所以,一旦準備好的狀態是'4'或'100',你就可以在那裏添加你的js ..也就是說,'if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {0128]你想在這裏用xmlhttp.responseText; }' – 2012-02-21 05:53:30

1

你用過JQuery成功嗎?成功處理程序只有在您的響應準備就緒後纔會被調用。 試試這個:

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    //Do the stuff here, hence downloading has been completed and response from server is ready 
    $(this).addUI("done"); 
    } 
}); 
0

我必須面對這個問題太..這裏問題是你的內容尚未公佈之前,你可以在它的工作。
你給將導致返回 該解決方案的任何引用可以.bind()& .live()

想這是你的動態內容

$('body').append('<div class="clickme">Another element</div>'); 


您可以通過元素綁定,

$('.clickme').bind('click', function() { 
// Bound handler called. 
}); 

或註冊它的直播內容,通過

$('.clickme').live('click', function() { 
// Live handler called. 
}); 

不再需要時,您可以通過.die()
你可能還會發現.delegate() & 退訂動態內容的情況下undelegate()很有用,因爲與.live()& .die()幾乎沒有問題。
檢查http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/選擇您需要的應​​用程序。
請記住,不要忘記你確保內容是由ajax成功載入的,因爲程序員_1在這裏提到。
祝你好運:)
任何進一步的澄清請評論。