Обратный вызов jQuery вызван слишком рано? - PullRequest
0 голосов
/ 16 ноября 2009

Вот код, который я использую:

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 ]

5 голосов
/ 16 ноября 2009

Я думаю, что синтаксис немного для этого.

вместо

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

попробуй

function loadContent() {
    $(area).load(toLoad,'',sorter)
};
0 голосов
/ 16 ноября 2009

Попробуйте следующее (оберните вызов 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
};
0 голосов
/ 16 ноября 2009

Переместите определения вашей функции за пределы функции загрузки. Это должно выглядеть как

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
}
...