Je suis en train de développer un widget. Le widget comporte trois onglets implémentés de la manière suivante. Le problème que j'ai est que le code jquery qui a écrit est très lent. Si l'utilisateur modifie rapidement les onglets, le widget devient béant et s'enlise. Cela provoque l'alignement des onglets avec les données affichées et un décalage général. Je crois que c'est parce que l'onglet est changé avant que $ .load() soit fini. J'ai essayé de mettre en œuvre ce qui suit:Optimisation de jQuery pour les onglets
("#tabs li a").click(function()
{
$("#tabs li.active").removeClass("active");
$("#tab_content").load($(this).attr('href'), function(){
$(this).parent().addClass("active");
});
return false;
});
Je crois comprendre que la fonction de rappel au sein de la fonction de charge n'exécute pas jusqu'à ce que la fonction de charge est terminée. Je pense que cela résoudrait mon problème, mais je ne peux pas trouver un moyen de sélectionner l'onglet correct qui a été cliqué dans la fonction de rappel. Si ce n'est pas le moyen de le faire, quelle est la meilleure façon de mettre en œuvre ces onglets afin qu'ils arrêtent de charger une ancienne requête et de charger la dernière sélection d'onglet par l'utilisateur?
Merci
Merci pour ce code. Cela fonctionne et la fonction de rappel est en cours d'exécution correctement. Cependant, le problème persiste et est peut-être un peu pire lorsque les onglets sont changés rapidement. Donc, est-il possible d'annuler la requête AJAX une fois qu'une autre est faite? Je pense que la façon dont je fais cela est fondamentalement défectueuse. – dbaugh
Si la demande a été/est en cours de traitement par le serveur, il y a peu de choses que vous pouvez faire. Mais jetez un coup d'oeil [ici] (http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery) pour savoir comment vous pouvez annuler une demande –
Juste pour apprendre car je suis encore un peu rouillé avec jQuery et javascript en général, pourquoi avez-vous passé 'e' comme paramètre pour la fonction dans la fonction click? – dbaugh