我有一个简单的自定义标签模块,可以使用AJAX请求加载标签(通过$(elem).load()
)。在每个加载了AJAX的页面上,我都有一些JavaScript。第一次页面加载(通过直接输入URL,而不是AJAX),javascript完全启动。当我通过AJAX选项卡离开页面时,页面中的javascripts不再加载。
有什么方法可以强制他们执行吗?
(未激活的javascript放在$(document).ready()
函数中,如果有帮助的话)
答案 0 :(得分:10)
您需要使用load()
函数的回调:
$(elem).load('source.html', function() {
// here you need to perofrm something what you need
ActionOnDocumentReady();
});
您可以将$(document).ready
中的所有操作放入某个功能(例如ActionOnDocumentReady()
)并在load()
回调中调用。
答案 1 :(得分:5)
只有在初始dom准备就绪时才会触发domeready事件(例如名称和jquery-api建议)。
如果要使用jquerys load()并在已完成加载时触发函数,则必须使用回调函数(according to the api)。
如果你想在domready和load-events上做同样的事情,最好的方法是为它定义一个新函数:
function dostuff(){
// do some stuff here
}
并在两种情况下触发此功能:
$(function(){ // domready | shortcut for "$(document).ready()"
dostuff();
})
$('#something').load('script.php', function() { // callback on load()
dostuff();
});
答案 2 :(得分:3)
将您的$(document).ready()
代码放入新方法中。让我们称之为methodA
。现在从methodA
调用此$(document).ready()
。其次,在ajax请求成功后调用相同的方法。这应该可以解决你的问题。