2010-11-26 16 views
1

J'essaie d'écrire un programme où l'utilisateur clique sur une image et l'image se déplace vers la droite de 25px. L'image bouge quand je clique dessus, mais j'ai essayé d'ajouter un morceau de code qui fait revenir l'image à gauche de la fenêtre quand elle passe du côté droit de la fenêtre. J'ai essayé d'utiliser une instruction If dans la procédure de l'animation, mais cela ne semble pas fonctionner. Voici ce que j'ai:jQuery question concernant si déclaration et déplacement de position

$('#image').click(function() { 
$(this).animate({ 
    left: '+=155', 
function() { 
    if ($(this).left > $(document).width) { 
$(this).left = 0 
    } 
    }; 

    }); 

}); Est-ce que j'utilise la mauvaise syntaxe ou ma fonction est-elle incorrecte? Merci de votre aide.

Répondre

1

Je ferais ça ...

$('#image').click(function() { 

    $(this).animate({ 
      left: '+=155', 
      function() { 
       if ($(this).offset().left > $(document).width) { 
        $(this).css({ left: 0 }); 
       } 


     }); 
}); 

Bien que vraiment ce serait mieux ajouter les pixels de passage au left premier original, et en veillant à ne pas dépasser la largeur. Dans ce cas, return false et ne déplacez pas l'élément du tout.

Vous souhaitez également ajouter la largeur de #image au décalage avant de le calculer, sinon il ne se déclenchera pas il a dépassé jusqu'à ce que l'extrême gauche de l'élément a dépassé.

0

Où est votre durée?

Essayez ceci,

$('#image').click(function() { 
    $(this).animate(
      { 
       left: '+=155' 
      }, 
      5000, 
      function() { 
       if ($(this).left > $(document).width) { 
       $(this).left = 0 
       }  
     ); 
});