2011-09-21 168 views
7

我有一个简单的自定义选项卡模块,该模块使用AJAX请求加载选项卡(通过$(elem).load())。在每个使用AJAX加载的页面上,我都有一些JavaScript。第一次加载页面时(通过URL的直接输入,而不是AJAX),javascript会完全启动。当我通过AJAX选项卡离开页面时,页面中的JavaScript不再被加载。jQuery - 当使用AJAX加载内容时document.ready不会触发

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

回答

10

(不点火被放置在一个$(document).ready()功能是否有帮助的JavaScript),您需要使用load()功能的回调:

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

你可以把你所有的行动$(document).ready成某些功能(例如ActionOnDocumentReady()),并拨打电话load()回叫。

5

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

如果你想使用jquerys load()并且在加载完成后触发一个函数,你必须使用回调函数(according to the api)。

,如果你想要做的domready中和负载事件同样的事情,最好的方法是定义一个新的功能:

function dostuff(){ 
    // do some stuff here 
} 

和火在这两种情况下,这种功能:

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

$('#something').load('script.php', function() { // callback on load() 
    dostuff(); 
}); 
3

将您的$(document).ready()代码放入新方法中。我们称它为methodA。现在从$(document).ready()称为methodA。其次,在ajax请求成功后调用相同的方法。这应该可以解决你的问题。