74 votes

En utilisant fadein et append

Je charge des données JSON sur ma page et j'utilise appendTo() mais j'essaie de faire apparaître en fondu mes résultats, des idées ?

$("#posts").fadeIn();
$(content).appendTo("#posts");

J'ai vu qu'il y a une différence entre append et appendTo, dans les documents.

J'ai également essayé ceci :

$("#posts").append(content).fadeIn();

J'ai compris, ce qui précède a fonctionné !

Mais j'obtiens "undefined" comme l'une de mes valeurs JSON.

169voto

Kevin Gorski Points 2860

Si vous cachez le contenu avant de l'ajouter et chaînez la méthode fadeIn à cela, vous devriez obtenir l'effet que vous recherchez.

// Créez les éléments du DOM
$(content)
// Définit le style des éléments sur "display:none"
    .hide()
// Ajoute les éléments cachés à l'élément "posts"
    .appendTo('#posts')
// Fait apparaître en fondu le nouveau contenu
    .fadeIn();

0 votes

Je suis en train d'essayer $(elem).slideUp().appendTo(div).slideDown(); mais cela ne fonctionne pas dans l'ordre dans FF5. J'utilise le callback de slideUp pour ensuite ajouter et slideDown dans l'ordre, mais alors l'ajout n'a pas de callback, donc l'élément apparaît déjà visible. La réponse de Kent Fredric aborde ce problème, donc je suis seulement préoccupé par l'exécution de l'ajout avant le slide Down.

1 votes

La réponse de Kent aborde en effet l'utilisation de méthodes d'animation comme slideUp et slideDown avec des rappels, mais l'OP avait vraiment besoin d'une animation à la fin de la chaîne de méthodes. Avez-vous besoin d'aide supplémentaire?

7voto

Parand Points 16356

Je ne sais pas si je comprends pleinement le problème que vous rencontrez, mais quelque chose comme ceci devrait fonctionner:

HTML:

  Quelque chose ici

Javascript:

var counter=0;

$.get("http://www.something/dir",
    function(data){
        $('#posts').append('" + data + "" ) ;
        $('#post' + counter).fadeIn();
        counter += 1;
    });

Fondamentalement, vous enveloppez chaque morceau du contenu (chaque "post") dans un span, en définissant l'affichage de ce span sur none pour qu'il ne s'affiche pas, puis vous le faites apparaître en fondu.

0 votes

Exemple excellent de comment faire des choses simples de manière très compliquée. Désolé mec ;)

4voto

Firas Points 182

Cela devrait résoudre votre problème je pense.

$('#content').prepend('Bonjour!');
$('#content').children(':first').fadeOut().fadeIn();

Si vous utilisez append à la place, vous devez utiliser le sélecteur :last à la place.

3voto

Kent Fredric Points 35592

Vous devez être conscient que le code ne s'exécute pas de manière linéaire. Les éléments animés ne peuvent pas interrompre l'exécution du code pour effectuer l'animation et ensuite revenir.

   commmand(); 
   animation(); 
   command();  

`

C'est parce que l'animation utilise settimeout et d'autres astuces similaires pour faire son travail et settimeout est non bloquant.

C'est pourquoi nous avons des méthodes de rappel sur les animations pour s'exécuter lorsque l'animation est terminée (pour éviter de modifier quelque chose qui n'existe pas encore)

`

   command(); 
   animation( ... function(){ 
      command(); 
   });

3voto

Ball_cs Points 31
$(output_string.html).fadeIn().appendTo("#list");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X