2011-02-10 5 views
0

Je ne peux pas obtenir ce menu déroulant pour animer lentement ou même n'importe quoi.Comment faire en sorte que JQuery .animation() s'anime réellement.

$(document).ready(function() { 
    $('#menu > li').hover(function() { $('ul:first', this).show(); }, 
          function() { $('ul:first', this).hide(); } 
    ); 

    $('#menu li li').hover(function() { 
     $('ul:first', this).each(function() { 
      var p = $(this).parent(); 
      $(this).animate('top', p.position().top) 
        .animate('left', p.position().left + p.width()) 
        .show(); 
     });}, 
     function() { $('ul:first', this).hide(); } 
    ); 
}); 

Répondre

2

animate() de jQuery attend un objet/"carte" des propriétés CSS. Le deuxième paramètre définit la durée de l'animation en ms.

Votre exemple ressemblerait à quelque chose comme ça (- animant les top et les left propriétés à 2000ms):

$(this) 
    .show() 
    .stop() // see below 
    .animate({ 
     'top': p.position().top, 
     'left': p.position().left + p.width() 
    }, 2000); 

Si vous appelez animate à partir d'un gestionnaire hover vous voudrez peut-être avoir à a lookstop() ainsi que.

Astuce: Les docs sont un moyen facile de comprendre ce genre de choses.

Questions connexes