2010-07-27 8 views
1

J'ai une animation jQuery qui ne fonctionne pas. Je pense que le problème provient des parties qui sont les éléments dynamiques.Déclenche l'animation jQuery avec live()

Est-il possible d'appeler la méthode live() avec animate()?

Voici ce que je suis allé à ce jour:

$(".tls").animate({"left": "-=50px"}, "slow"); 
+1

besoin de plus de codes s'il vous plaît ... comment souhaitez-vous que cela se produise? lorsque les éléments apparaissent ou cliquent ou survolent ou défilent? quelle? – Reigel

+0

http://www.jsfiddle.net/hSR7f/ – jAndy

Répondre

1

Je suppose que vous avez une sorte de déclencheur pour l'animation?

La ligne de code que vous avez fournie exécutera l'animation chaque fois que la ligne de code est atteinte dans le code - ce que vous voulez, c'est lier une animation à un élément et l'exécuter plus tard.

Essayez, par exemple,

$('.tls').on('click', function(ev) { 
    $(this).animate({left: '-=50px'}, 'slow'}); 
    // Add any necessary event handling here, for example 
    ev.preventDefault(); 
    ev.stopPropagation(); 
}); 
+0

Comment est-ce que ce x-fer à 'delegate' ou' on' depuis 'live' est déprécié? –

+1

@tq: Selon la [documentation] (http://api.jquery.com/live/), il faut utiliser '.on()' en remplacement de '.live()'. J'ai mis à jour mon exemple pour refléter cela. –

0

Avait le même problème. Nécessaire vivre et animer sans un déclencheur. J'ai écrit un peu de travail autour. Je l'ai corrigé avec une fonction récursive. Voici mon exemple:

$("#drops").html('<div class="drop-item item"></div>'); 

    adddrop(); 

    function adddrop() { 
     $(".drop-item").animate({ 
      top: "+=90%" 
     },2500,"easeInQuad", function() { 
      if (parseInt($(".drop-item").css('left')) == parseInt($("#paddle").css('left'))) 
      { 
       $("#drops").html('<div class="drop-item item"></div>'); 

       adddrop(); 
      } 
      else 
      { 
       alert('fail'); 
      } 
     }); 
    } 

J'espère que je pourrais aider.