jQuery.load()回调函数在完成之前运行

时间:2013-08-04 20:39:05

标签: javascript jquery

我正在使用jQuery的.load()用php文件中的表替换我页面上的div。我正在使用回调函数来运行另一个修改刚刚加载的数据的函数,但它在加载表之前运行该函数,导致函数什么都不做。
有没有办法可以强制回调在加载后运行?我每10秒运行一次.load(),所以我不能告诉它等待。

这是我正在尝试做的事情:

function fixSelected(){
  $.each(selected, function(index, value) {
    document.getElementById(value).innerHTML = '-';
  });
}

function refreshTable() {
    $('#tablefill').load('table.php', function(){
      fixSelected();
    });
}

变量selected是一个数组,其中包含正在加载的表上几个按钮的ID。

2 个答案:

答案 0 :(得分:-1)

您需要将回调函数作为load()函数的第三个参数传递,如下所示:

function fixSelected(){
    $.each(selected, function(index, value) {
        document.getElementById(value).innerHTML = '-';
    });
}

function refreshTable() {
    $('#tablefill').load('table.php', fixSelected);
}

我在这里找到了解决方案:
jQuery.load() doesn't work with a defined function as a callback?

参见这个jsFiddle的例子:
http://jsfiddle.net/bayoffire/kNWpD/1/

答案 1 :(得分:-1)

我在table.php中有一个$(document).ready(function () {导致回调函数无效。不确定为什么会发生这种情况,但是删除它会解决所有问题。