2010-06-23 3 views
1

J'ai une table et quand je supprime une ligne, elle s'anime avec slideUp.jQuery SlideUp sur une ligne avec des colonnes cachées

$(id).find("td div").slideUp 

J'ai utilisé cette astuce pour utiliser slideUp sur une ligne: animating-table-rows-with-jquery

Il n'y a pas de problème lorsque toutes les colonnes sont affichées, mais quand je l'ai caché des colonnes, il se contente d'enlever la ligne sans animation. Je suppose que c'est un comportement normal de slideUp, mais y at-il un truc pour le faire fonctionner avec animer? Je pensais tester si le td est caché, ne rien faire, sinon slideUp, mais je ne pense pas que cela fera l'affaire.

Répondre

0

La raison est que le rappel donné à slideUp n'est pas appelé après toutes animations sont terminées, mais après chaque animation est terminée. Puisque les div s dans la colonne cachée ne sont pas visibles, l'animation ascendante n'a pas besoin d'être effectuée, c'est-à-dire qu'elle est terminée immédiatement, et ainsi le rappel est appelé immédiatement. Le rappel, cependant, supprime la ligne de la ligne entière.

Il y a plusieurs façons de gérer cela. L'idée que vous avez eu vous-même (ne pas traiter avec div s qui ne sont pas visibles de toute façon) est un moyen qui devrait fonctionner.

Une autre méthode consiste à définir un délai d'attente pour supprimer la ligne au lieu de le faire dans le rappel.

Une troisième voie est de vérifier dans le rappel s'il y a des div s gauche, et seulement supprimer la ligne s'il n'y a pas, à savoir quelque chose comme

$(id).find("td div").slideUp(function() { 
    $(this).remove();      // remove the div itself 
    if ($(id).find("td div").length == 0) // if none are left 
     $(id).remove();     // then remove the row 
}); 
+0

réponse vraiment sympa, je vais tester demain (fin de la journée de travail pour moi;), et poster la solution que j'ai choisie. Merci beaucoup (btw je suis vraiment intéressé à apprendre comment les animations fonctionnent dans jQuery, où avez-vous trouvé une telle information?). –

+0

@Michael Lumbroso: Je suppose que tout le monde faisant de l'animation avec jQuery a été mordu par un problème similaire à un moment donné; vous apprenez alors ce genre de choses en cours de route. La [documentation jQuery] (http://api.jquery.com/) est en fait plutôt bonne. – balpha

+0

J'ai mis en œuvre votre solution, cela a fonctionné si parfaitement, merci pour votre réponse claire, exhaustive et rapide, je vais m'inscrire pour pouvoir voter pour vous;) Btw, j'ai vérifié le doc jQuery avant de soumettre ma réponse (toujours faire avant de créer un sujet ^^), mais je n'avais trouvé aucun de ce qui pouvait m'aider avec cela. J'ai vérifié à nouveau, et je ne sais toujours pas comment j'aurais pu obtenir des informations plus utiles sans vos précieuses explications pro. (sry pour mon mauvais anglais, la conjugaison grammaticale n'est pas ma spécialité: p) –

Questions connexes