jQuery回调叫得太早了?

时间:2009-11-15 23:48:57

标签: jquery jquery-callback

这是我正在使用的代码:

function load(toLoad, area){
    $(area).html('<img src="images/ajax-loader.gif" alt="Loading" class="center" />');
    loadContent();
    function loadContent() {
        $(area).load(toLoad,'',sorter())
    };
    function sorter() {
        alert('s');
        $("#myTable").tablesorter({
            widgets: ['zebra']
        });
    };
    return false
};

当调用加载函数时,警报会在显示加载图像时显示,而不是在加载完成后显示。

它出了什么问题?

3 个答案:

答案 0 :(得分:5)

我认为语法略有不同。

而不是

function loadContent() {
    $(area).load(toLoad,'',sorter())
};

尝试

function loadContent() {
    $(area).load(toLoad,'',sorter)
};

答案 1 :(得分:0)

将您的函数定义移到load函数之外。它应该看起来像

function load(toLoad, area){
    $(area).html('<img src="images/ajax-loader.gif" alt="Loading" class="center" />');
    loadContent();
}

function loadContent() {
        $(area).load(toLoad,'',sorter())
}

function sorter() {
        alert('s');
        $("#myTable").tablesorter({
                widgets: ['zebra']
        });
    };
    return false
}

答案 2 :(得分:0)

尝试以下方法(在匿名函数的load函数中包装对sorter()的调用)

function load(toLoad, area){
    $(area).html('<img src="images/ajax-loader.gif" alt="Loading" class="center" />');
    loadContent();
    function loadContent() {
        $(area).load(toLoad,'',function() {sorter()})
    };
    function sorter() {
        alert('s');
        $("#myTable").tablesorter({
                widgets: ['zebra']
        });
    };
    return false
};