0

我正在使用 ajax 动态加载我的页面内容,并且我想使用函数加载某些 .js 文件。.js 文件加载正常,但仅在通过 ajax 加载下一页之前。

例如:从主页到传记页面:第一次加载 .js 文件第二次:加载传记页面(通过 ajax)

看起来 ajax 页面始终处于状态文档就绪状态。因此,它会立即触发 .js 文件,然后再通过 ajax 加载传记页面的内容。

$(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 文件,而不是超时。

编辑1:

我在这里添加了 ajax 调用:http: //jsbin.com/ediFUca

4

2 回答 2

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");
});
于 2013-08-19T09:51:55.083 回答
1

正如您在第一行中提到的那样,您正在动态加载竞争,因此您的预定义点击处理程序不会为稍后添加的内容触发。

所以你需要使用事件委托。

为此使用jQuery.on();

样本

jQuery(document).on('click',".element",function()
{
    jQuery.getScript("http://example.com/js/file.js");
});
于 2013-08-19T09:53:14.513 回答