jQuery - 在使用AJAX加载内容时,document.ready没有触发

Edu*_*uca 7 javascript ajax jquery

我有一个简单的自定义标签模块,它使用AJAX请求(via $(elem).load())加载标签.在每个加载了AJAX的页面上,我都有一些JavaScript.第一次页面加载(通过直接输入URL,而不是AJAX),javascript完全启动.当我通过AJAX选项卡离开页面时,页面中的javascripts不再加载.

有什么方法可以强迫他们执行吗?

(没有触发的javascript放在$(document).ready()函数中,如果有帮助的话)

Sam*_*ich 10

你需要使用load()函数的回调:

$(elem).load('source.html', function() { 
    // here you need to perofrm something what you need
    ActionOnDocumentReady();
});
Run Code Online (Sandbox Code Playgroud)

您可以将所有操作$(document).ready放入某个函数(ex ActionOnDocumentReady())并在load()回调时调用它.


oez*_*ezi 5

只有在初始dom准备就绪时才会触发domeready事件(如名称和jquery-api建议).

如果你想使用jquerys load()并在已经完成加载的情况下触发一个函数,你将不得不使用一个回调函数(根据api).

如果你想在domready和load-events上做同样的事情,最好的方法是为它定义一个新函数:

function dostuff(){
  // do some stuff here
}
Run Code Online (Sandbox Code Playgroud)

并在以下两种情况下触发此功能:

$(function(){  // domready | shortcut for "$(document).ready()"
  dostuff();
})

$('#something').load('script.php', function() { // callback on load()
  dostuff();
});
Run Code Online (Sandbox Code Playgroud)