2017-09-04 60 views
0

如果發現一些關於jQuery .load(url)和發射問題的文章,但我沒有找到解決方案,或者我沒有真正理解他們 - 對不起。腳本不工作裏面動態加載內容

到目前爲止,這是正確的?:

  • .load(URL)的內容是不是真的DOM裝?
  • 它需要一個回調來觸發?

我的例子:

我有一個 「main.php」 用列表。我從另一個php中加載列表的內容,其名稱爲「my_list.php」。

「my_list.php」裏面有一些jQuery腳本。例如,如果我按鏈接,模式將打開。

所以,如果我直接打開「my_list.php」,所有腳本都可以正常工作。如果我在「main.php」中加載「my_list.php」中的內容,則「my_list.php」中的腳本不會再點擊aso。

我加載像這樣的內容:

$("#list").load("my_list.php .list_wrapper"); 

我找到了一個解決方案: 你只需要添加你需要的腳本/函數加載的內容是這樣的:

$("#list").load("my_list.php .list_wrapper", function() { 
    $.getScript("js/my_scripts_for_the_list.js"); 
}); 
+0

請使用腳本以外的術語。這是非常模糊的。你確實是指「my_list.php中的腳本元素中沒有任何腳本似乎可以工作」,或者「沒有任何jQuery處理程序(例如$('。list_wrapper')。click(...)文檔準備好似乎工作「......你的問題沒有提供足夠的細節來幫助你,嘗試在一個最小可行的代碼示例中向我們展示所有相關代碼 –

+0

@Sam Ax OK,對不起......我的意思是」內部的所有腳本my_list.php「將不再工作,如果它們被加載到新頁面中 – Pepe

回答

0

像jQuery $('#elem').load('/some-page.php')文檔說:

描述:從服務器加載數據並將返回的HTML放入匹配的元素中。

這意味着GET請求將在/some-page.php製成。該腳本/頁面應該返回一個有效的HTML響應。該HTML響應將被注入到給定的jQuery元素中。該元素將包含檢索到的HTML。

很高興知道:通過​​請求的頁面上通過JS/AJAX創建的任何動態內容都不會執行。只有服務器端呈現的內容纔會被檢索。

如果在瀏覽器中訪問/my_list.php返回一個有效的HTML,請嘗試使用它像這樣:

$("#list").load("my_list.php"); 
+0

嗨,那麼,是不是有任何簡單的方法來執行它?我讀了一些關於回調的內容? – Pepe

+0

我已經更新了我的答案一個例子,請讓我知道這是否工作,同時確保DOM中存在'#list'元素 –

+0

將顯示內容,就像我的腳本一樣,但my_list.php中的所有腳本也不會執行;(... – Pepe

0

你的JavaScript將得到執行從my_list.php罰款,只要確保它不沒有任何html,head,body標籤。刪除這些標籤,只使用div或跨度。因爲在調用load到my_list.php之後的當前場景中,你的頁面將有多個html,head或body標籤,這些標籤將不會被瀏覽器正確渲染。只要刪除HTML,頭部和身體標籤,一切都應該正常工作。我希望這有幫助。 PS:不介意我的英語。

+0

嗨。有趣的想法,但它不適用於我;(... – Pepe