2013-09-01 52 views
1

的html文件我有一個簡單的導航欄,點擊不同的項目會導致主要內容發生變化。從技術上講,所有的工作都在一個單獨的文件「main.html」中完成,該文件包含了所有內容,我使用jquery函數「load」來動態加載其他html文件,將其放置在main.html文件中。只要在嵌入的這些html文件中沒有javascript,就可以工作。但有一個文件我想嵌入,它也有JavaScript代碼,它應該在$(document).ready上執行。但是這絕不會發生 - 在JavaScript中沒有錯誤,它只是永遠不會被執行。我想這是因爲我只改變了「main.html」的DOM,然後就沒有「onReady」事件被觸發。有人能給我一些關於什麼是獲得理想行爲的最佳方式的想法嗎?將JavaScript放在「main.html」中會導致事情發生,但這對我來說是不行的。如何在我的網站中動態地包含一個包含javascript

在此先感謝!

更新:問題解決了 問題解決了。當我在onReady()事件外調用javascript時(正如Loic Coenen所建議的那樣),它的工作原理與此相同。我還刪除了纏繞的標籤。非常感謝所有幫助我的人!

+0

也許使用iframe,但也不是最好的主意。 – kangoroo

+0

它是什麼類型的Javascript?你可以發佈你的包含的代碼(或者至少沒有被執行的JavaScript部分)嗎?請注意,'$(document).ready'事件僅在main.html初始就緒時觸發,而不是在動態加載內容時觸發。 – funkwurm

回答

1

可以觸發一個自定義事件通知您的other.html腳本的樹被加載。我還沒有嘗試過,但我會用類似的東西:

在main.html中:

$('#div_to_load').load('other.html',{},function(){ 
    $('#div_to_load').trigger('loaded') 
}) 

在other.html

$('#div_to_load').on('loaded', function(){ 
    // Code to execute 
}) 

我不知道這是否可以做到這一點。

編輯:我asume,直接包含在你的other.html JavaScript是無論如何執行。

+0

你的假設是對的。當我在onReady()事件之外調用JavaScript時,它的工作原理與此相同。我也刪除了標籤纏繞。非常感謝所有幫助我的人! –

+0

哦,並確保腳本執行放在'other.html'文件的末尾,以確保當你需要時,DOM中的元素存在於你的DOM中。 –

+1

完成:)感謝您的建議,我確實在頂部的腳本,並想知道爲什麼有些東西仍然有線,但後chaning它一切工作正常:) –

1

你在main.html包含頭部,身體。問題可能是,當你加載頁面時,你的其他頁面也有一個頭部和身體等等,如果你正在加載到一個div,它應該只是代碼,可以是javascript,也可以是頭部或身體。但是如果您拒絕,這裏是您的解決方案

$("#loadnewpagebttn").load(location.href+" foobar ",function(){ 
    $.getScript("js/yourscript.js"); 
}); 

您需要爲該頁面創建一個腳本文件並加載它。內嵌腳本有一些不好的習慣,反正

完整的例子是什麼:

jQuery.getScript(url, [ success(data, textStatus) ]) 
url - A string containing the URL to which the request is sent. 

success(data, textStatus) - A callback function that is executed if the request succeeds. 

$.getScript('ajax/test.js', function() { 
    alert('Load was performed.'); 
}); 

http://api.jquery.com/jQuery.getScript/

相關問題