Question

Je l'ai fait un menu déroulant très simple en utilisant jQuery slideUp et slideDown pour les fonctions - mais il est très nerveux (j'utilise Firefox 3.6.8) si la souris se déplace rapidement sur elle, ou si la souris est tenue sur l'un des éléments du sous-menu.

Je l'ai fait un exemple de travail sur le lien suivant:

http://jsfiddle.net/jUraw/19/

Sans la fonction .stop (true, true) il est encore pire. J'ai aussi essayé d'ajouter en vol stationnaire intention, mais parce que j'ai un diaporama déclenché en vol stationnaire dans le même div il est en conflit avec la fonctionnalité du diaporama.

Y at-il quelque chose que je suis absent? J'ai entendu le travail de force clearqueue, ou peut-être délai d'attente, mais ne peut pas savoir où les ajouter.

Merci à tous.

Était-ce utile?

La solution

Vous pouvez construire un léger retard, dit 200ms pour l'animation pour compléter si ce n'est pas nerveux, mais le congé .stop() il ne peut toujours pas construire, comme ceci:

$(function () {    
  $('#nav li').hover(function () {
     clearTimeout($.data(this, 'timer'));
     $('ul', this).stop(true, true).slideDown(200);
  }, function () {
    $.data(this, 'timer', setTimeout($.proxy(function() {
      $('ul', this).stop(true, true).slideUp(200);
    }, this), 200));
  });
});

Vous pouvez essayer ici , cette utilisation approche $.data() pour stocker le délai d'attente par élément si vous avez beaucoup d'éléments de menu afin de traités indépendamment chaque menu, cela devrait donner un bel effet.

Autres conseils

Celui-ci ajoute un léger retard à l'ouverture -. Si rapidement en cours d'exécution sur ne sortir le menu

$(function () {    
  $('#nav li').hover(function () {
    $('ul', this).stop(true, true).delay(200).slideDown(200);
  }, function () {
    $('ul', this).stop(true, true).slideUp(200);
  });
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top