2009-11-15 4 views
0

Voici le code que je utilise:Rappel de jQuery appelé trop tôt?

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

Lorsque la fonction de charge est appelée, l'alerte montre lorsque l'image de chargement est affiché, et non après la fin du chargement.

Qu'est-ce qui ne va pas?

+0

où est votre charge (toload, région) appeler? –

+0

Vous pouvez également être intéressé par les réponses ici ... http://stackoverflow.com/questions/318630/get-real-image-width-and-height-with-javascript-in-safari-chrome – Nosredna

+0

@Soufiane Hassou , c'était ailleurs dans le code. Je n'ai pas vu de raison de l'inclure. – Hintswen

Répondre

5

Je pense que la syntaxe est un peu off pour cela.

au lieu de

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

essayer

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

Parfait. Je ne sais pas pourquoi cela a semblé fonctionner avec les parenthèses dans d'autres endroits cependant ... Peut-être que je ne l'ai pas remarqué. – Hintswen

0

Déplacer vos définitions de fonctions en dehors de la fonction de charge. Il devrait ressembler à

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! Je savais que ça avait l'air faux, j'ai effectivement eu le code d'un autre endroit et je n'arrivais pas à comprendre pourquoi ils avaient ça comme ça. – Hintswen

0

Effectuez les opérations suivantes (envelopper l'appel à trieur() dans la fonction de charge dans une fonction anonyme)

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