我正在用ajax动态加载我的页面内容,我想用函数加载某些.js文件。 .js文件加载正常,但仅在通过ajax加载下一页之前。
例如:从主页到传记页面: 1st加载.js文件 第二:加载传记页面(通过ajax)
看起来ajax页面始终处于状态文档准备状态。因此,在通过ajax加载传记页面的内容之前,它会立即触发.js文件。
$(document).ready(function() {
$(".element").click(function() {
jQuery.getScript("http://example.com/js/file.js");
});
});
我已设法暂时解决此问题,因此.js文件将在5秒后加载,因此在加载页面传记之后。
$(".element").click(function() {
setTimeout(function() {
jQuery.getScript("http://example.com/js/file.js");
}, 5000);
});
如何更改功能,以便在加载传记页面(或任何其他页面)后立即加载.js文件,而不是超时。
EDIT1:
我在这里添加了ajax调用: http://jsbin.com/ediFUca
答案 0 :(得分:4)
AJAX允许您指定回调:在请求完成时调用的函数。
将您的脚本/函数放入回调中,它将在您的秒页完成加载时执行,从而有效地解决您的问题:
$.ajax({
url: "test.html"
}).done(function() {
//do things in here that should be done after the AJAX call e.g:
jQuery.getScript("http://example.com/js/file.js");
});
答案 1 :(得分:1)
正如您在第一行中提到的那样您正在动态加载竞争,因此您的预定义点击处理程序不会针对稍后添加的内容触发。
所以你需要使用事件委托。
使用jQuery.on();
。
<强>示例强>
jQuery(document).on('click',".element",function()
{
jQuery.getScript("http://example.com/js/file.js");
});