2013-02-19 3 views
0

J'ai essayé différentes variantes de l'exemple de code ci-dessous:Comment faire en sorte que jQuery anime facilement un élément après le chargement d'un contenu externe?

$(document).ready(function(){ 
    $('#demo').hide(); 
    $("button").click(function(){ 
     $("#demo").load("demo.php").show('medium'); 
    }); 
}); 

... mais l'animation « sauts », et n'est pas lisse. C'est comme si la fonction show() supposait que l'élément caché #demo était plus petit que les nouvelles informations externes qui y étaient chargées. Il n'y a rien dans l'élément #demo jusqu'à ce que load() l'y mette, donc il commence plus petit qu'après le chargement du contenu externe.

Comment puis-je faire show() "comprendre" que #demo est en fait plus grand avec le contenu chargé, donc il s'anime en douceur lorsqu'il est activé?

+1

Essayez de placer 'show' dans le rappel de chargement. – j08691

+0

Essayé, mais je ne peux pas le faire fonctionner. Comment tu fais ça? – Kebman

Répondre

3

Essayez d'utiliser le complete callback function dans .load()

$(document).ready(function(){ 

    var demo = $('#demo'); 

    demo.hide(); 
    $("button").click(function(){ 
     demo.load('demo.php', function() { 
      demo.show('medium'); 
     }); 
    }); 
}); 
+0

Très bonne réponse informative! J'ai également appris une meilleure façon de régler les choses avec la façon dont vous définissez cette variable. Je vous remercie! :) – Kebman

2
$("#demo").load("demo.php",function() { 
    $("#demo").show('medium') 
}); 

La page se charge alors que l'animation va la vitesse "moyenne" pour montrer le récipient. Utilisez la fonction show dans le rappel de load.

.show()

+0

Vous pouvez également afficher #demo en premier, puis charger le php. Vous pouvez utiliser un graphique de chargement allant sur cette route –

Questions connexes