2009-11-15 2 views
0

Вот код, я использую: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 
}; 

Когда функция нагрузки называется, предупреждение показывает, когда загрузка изображения показана, а не после того, как он закончил загрузку.

Что не так?

+0

где ваш груз (toload, область) позвонить? –

+0

Вы также можете быть заинтересованы в ответах здесь ... http://stackoverflow.com/questions/318630/get-real-image-width-and-height-with-javascript-in-safari-chrome – Nosredna

+0

@Soufiane Hassou , это было где-то еще в коде. Я не видел причины для его включения. – Hintswen

ответ

5

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

вместо

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

попробовать

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

Отлично. Я не знаю, почему это похоже на скобки в других местах, хотя ... Возможно, я просто этого не заметил. – Hintswen

0

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

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 
} 
+0

ha! Я знал, что это было неправильно, я действительно получил код откуда-то еще и не мог понять, почему у них это было так. – Hintswen

0

Попробуйте следующее (обернуть вызов сортировщик() в функции нагрузки в анонимной функции)

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