Vous devriez regarder à l'aide de jQuery
delay() function.
mise à jour (voir les modifications pour l'histoire)
D'accord. Maintenant, je comprends mieux votre problème. Merci pour la clarification. Je pense que ce code fait ce que vous voulez qu'il fasse. Vous pouvez jouer avec un exemple: http://jsfiddle.net/57eGD/
$('li#locations a').mouseenter(function() {
var curElement = this;
var timeoutId = setTimeout(function() {
$('#locationsSuperNav').slideDown();
}, 650);
// Use data so trigger can be cleared.
$(curElement).data('timeoutId', timeoutId);
}).mouseleave(function() {
clearTimeout($(this).data('timeoutId'));
});
$('#locationsSuperNav').mouseleave(function() {
$(this).slideUp();
});
Fondamentalement, le retard() ne fonctionnerait pas pour vous que les retards que l'événement, mais il ne permet pas un événement à annuler. Par conséquent, cela ne fonctionnera pas pour vous parce que, même si vous retardez l'événement slideDown(), cela arrivera toujours si l'utilisateur survole. Pour cette raison, vous devez utiliser window.setTimeout, ce qui permet une annulation. Cependant, la partie (en quelque sorte) délicate est que vous devez être en mesure de dire le délai d'annulation. C'est là que le data function de jQuery entre en jeu. Cette fonction vous permet de joindre des données de tout type aux éléments DOM. Donc, dans votre cas, vous devez l'attacher à l'élément que vous voulez déclencher l'événement (dans ce cas, $('li#locations a')
) qui vous permettra d'annuler si vous laissez l'élément avant que l'événement ne se déclenche. Vous pouvez régler le 650 pour un délai plus long ou plus court.
L'autre chose à noter est que hover() devrait fonctionner ici au lieu de mouseenter et de mouseleave. Il devrait être quelque chose comme ceci:
$('li#locations a').hover(function() {
var curElement = this;
var timeoutId = setTimeout(function() {
$('#locationsSuperNav').slideDown();
}, 650);
// Use data so trigger can be cleared.
$(curElement).data('timeoutId', timeoutId);
}, function() {
clearTimeout($(this).data('timeoutId'));
});
J'espère que cela vous aide! Bonne expérience d'apprentissage pour moi aussi.
aller pour hoverintent plugin son très agréable todo ce genre de choses – kobe