2011-04-01 60 views
0

我有一個問題。如何使用jquery.load()加載腳本?

在我的文件content.html中我有腳本。 當使用jQuery的load()函數加載此頁面時,頁面會顯示,但腳本不起作用。我認爲這是因爲選擇者。

我該如何解決這個問題?

編輯:

$(document).ready(function(){ 
$('#content').load('content.html #toLoad', function(){}); 
}) 

感謝

+2

你需要對這個問題不是很清楚 – amosrivera 2011-04-01 23:09:09

+0

工作,不要空的第二個參數傳遞給'.load()'。那應該完成什麼? content.html中的頁面是否包含ID爲'toLoad'的元素? – 2011-04-01 23:10:10

回答

5

當你說「劇本不行」你的意思是存在的JavaScript在你通過AJAX加載頁面?

它不會工作,至少不會直接。

你有兩種選擇。從已加載的內容中解析出腳本,然後使用eval來運行它。

更好的方法是使用$.getScript加載(並執行)javascript。如果您想將您的JavaScript與您已加載的HTML綁定,那麼您需要一些約定來識別腳本。例如,你可以有一個標籤在你的動態加載HTML:

<span style="display:none;" id="script">/scripts/somescript.js</span>

然後尋找與ID =「腳本」當您加載內容的跨度,如果你找到它,使用$.getScript加載腳本它確定。

例如...

$.load('content.html #toLoad', function(data){ 
    var $script = $(data).find('span[id=script]'); 
    if ($script.length) { 
     $.getScript($script.html()); 
     // remove the span tag -- no need to render it 
     $script.remove(); 
    } 
    $('#content').html(data); 
}); 
+0

如何使用$ .getScript與id =「script」? – Steffi 2011-04-01 23:19:04

+0

請參閱編輯,您必須從標籤中提取數據。 – 2011-04-01 23:23:08

+0

你爲什麼要做'.getScript($ script.html());'?如果我的腳本內聯(content.html'內),我必須做些什麼?不是外部文件'blabla.js' – Steffi 2011-04-01 23:33:07