2010-11-04 8 views
0

Donc maintenant j'ai le codeComment attendre la fin d'une fonction jQuery avant de poursuivre?

$('[name=dept]').live('change',function() { 
$('#course').load('getCla.php?dept='+$(this).val()); 
$('select.speedC').selectmenu({style:'dropdown',maxHeight: 250}); 
}); 

Fondamentalement, ce qu'il fait est une forme se propage menu de sélection après une valeur est choisie. Le problème est que la troisième ligne n'a pas l'action voulue, elle essaie de s'exécuter avant que la deuxième ligne ne finisse de remplir la liste.

Y at-il un moyen de faire attendre la 3ème ligne jusqu'à la propagation de la liste? (En remplissant la liste reformate la liste).

Répondre

5

Utilisez le paramètre de rappel de .load(), comme ceci:

$('#course').load('getCla.php?dept='+$(this).val(), function() { 
    $('select.speedC').selectmenu({style:'dropdown',maxHeight: 250}); 
}); 

Les pistes de rappel lorsque la réponse revient et l'élément #course a le nouveau contenu. Il reçoit également le html renvoyé du serveur comme premier argument, si vous en avez besoin pour une raison quelconque.

également depuis votre sélection initiale est si cher, je recommande fortement .delegate() ici, comme ceci:

$('body').delegate('[name=dept]', 'change', function() { 
    $('#course').load('getCla.php?dept='+$(this).val(), function() { 
    $('select.speedC').selectmenu({style:'dropdown',maxHeight: 250}); 
    }); 
}); 
+0

. Je n'arrive pas à avoir ma réponse devant vous ... semble toujours avoir un pas de retard. Mais je vous ai battu à celui-ci .. J'étais réellement surpris que vous n'avez pas fourni une réponse à http://stackoverflow.com/questions/4084095/help-in-jquery-selectors –

+0

@John - probablement parce que j'étais endormi:) contrairement à toutes les rumeurs, je dors environ 4-6 heures par jour :) –

+0

sonne à peu près juste. C'est à propos de tout le sommeil que je reçois aussi. –

2

utiliser la fonction de rappel dans jQuery load()

comme ceci:

$('[name=dept]').live('change',function() { 
    $('#course').load('getCla.php?dept='+$(this).val(), function (responseText, textStatus, xhr) { 
    $('select.speedC').selectmenu({style:'dropdown',maxHeight: 250}); 
    }); 
}); 
+0

Merci! Nick a répondu en premier, alors je dois le choisir, mais tu as quand même aidé! – Parker

+0

@Parker ... Pas de problème ... Nick répond toujours en premier ... lol :) –

Questions connexes