這更像是一個設計問題。通過ajax打開的第二頁不觸發javascript
我在頁面A.html
和頁面B.html
調用.js文件$(document).ready()
內有一些jQuery代碼,並且工作正常。
在頁A.html
有一個鏈接可以通過使用引導模式的ajax打開B.html
。
頁B.html
A.html
頁面,模式上打開如預期,但所有的B.html
JavaScript沒有被渲染,即使它已經存在。
所以,我目前的解決方法使其工作,這對我來說不太自然,就是將所有代碼放入這樣的函數中。
$.fn.myFunction = function() {
// my code here
};
,然後檢測AJAX,老毛病又犯EVAL並調用該方法
$(".btn-that-opens-modal").on("ajax:success", function(e, data, status, xhr) {
eval(xhr.responseText);
$("body").MyFunction();
});
有沒有更好的方式來做到這一點?
好的,但如果JavaScript是在頁面A上,當通過模態加載時爲什麼不能立即在頁面B上使用?即使使用eval作爲我上面的例子,我需要手動重新加載函數使其工作。 – Martin
Wilfred,這個答案是不正確的。特別是,聲明「JavaScript不會出於安全原因運行」。 jQuery *將確實運行通過AJAX加載的JavaScript,當它加載到DOM *中時,只要遵守* CORS限制。查看我的答案以獲取更多信息。 –
@Martin我認爲你遇到了一個問題,即頁面A上的JavaScript已經在$(document).ready上運行,所以當你在$(document).ready中加載B.html時,再次運行它適用於B. – Wilfred