$(文件)。已经无法在ajax页面中工作

时间:2013-08-19 09:49:25

标签: javascript jquery ajax

我正在用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

2 个答案:

答案 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");
});