J'ai un texte que je veux animer quand je passe la souris dessus par exemple:
$(".tabb tr").hover(
function(){
$(this).find("td #headie").animate({marginLeft:'9px'},'slow')
},
function() {
$(this).find("td #headie").animate({marginLeft:'0px'},'slow')
});
avec ça .. quand je passe la souris sur la ligne .. la colonne du tableau s'anime en se déplaçant peu.
Le problème est le suivant: lorsque je déplace le curseur de la souris à plusieurs reprises sur ces lignes, puis m'arrête et vois .. l'animation continue pendant un certain temps même si je ne déplace pas la souris dessus. IL GARDE SE DÉPLACER PLUS TARD ..
comment puis-je arrêter ça?
Un article très bien écrit sur les animations jquery lisses en survol, que j'ai trouvé, était celui de Chris Coyier sur CSS Tricks:
http://css-tricks.com/full-jquery-animations/
Donc, l'adapter à votre code ressemblerait à ceci:
$(".tabb tr").hover(
function(){
$(this).filter(':not(:animated)').animate({
marginLeft:'9px'
},'slow');
// This only fires if the row is not undergoing an animation when you mouseover it
},
function() {
$(this).animate({
marginLeft:'0px'
},'slow');
});
Essentiellement, il vérifie si la ligne est animée et si ce n'est pas le cas, il appelle alors l'animation mouseenter.
J'espère que vos lignes s'animeront maintenant un peu comme les deux derniers exemples de cette page:
Je l'ai eu comme je le souhaitais. Voici le changement que j'ai fait "animer ({marginLeft: '0px'}, 0)"
Vérifiez le code ci-dessous ..
$(document).ready(function(){
$(".tabb tr").mouseover(function(){ $(this).find("td #headie").animate({marginLeft:'9px'},'fast') });
$(".tabb tr").mouseout(function(){ $(this).find("td #headie").animate({marginLeft:'0px'},0) });
});
jQuery fournit des gestionnaires d'événements spéciaux pour vos besoins :) utilisez mouseenter
et mouseleave
$(".tabb tr").mouseenter(
function(){
$(this).find("td #headie").animate({marginLeft:'9px'},'slow')
});
$(".tabb tr").mouseleave(
function() {
$(this).find("td #headie").animate({marginLeft:'0px'},'slow')
});
On dirait que vous voulez lier à mousemove non pas en vol stationnaire, mais aussi créer un gestionnaire pour mouseout comme $(foo).mouseout(function(){$(this).stop();})
pour terminer les animations.