J'ai un menu de navigation qui contient des sous-menus. En vol stationnaire, je veux que les sous-menus s'affichent après un second délai. Les éléments de menu marqués d'une classe de "plus" contiennent des sous-menus.Pourquoi firebug dit que mon appel de fonction est "indéfini"
Le problème est que l'une de mes fonctions appelée hoverCheck() revient indéfinie lorsqu'elle est appelée. Mais je ne peux pas comprendre pourquoi.
Voici mon code:
$(document).ready(function() {
navigation();
});
function navigation() {
var moreMenu = $('.nav li.more');
var hovering;
function hoverCheck() {
hovering = 'hover';
openMenu();
}
function openMenu() {
if(hovering == 'hover') {
$(this).children('ul').slideDown('fast');
}
}
moreMenu.mouseenter(function() {
setTimeout("hoverCheck()",1000);
});
moreMenu.mouseleave(function() {
hovering = null;
$(this).children('ul').slideUp('fast');
});
}
Cela a fonctionné (au moins pour faire fonctionner la fonction hoverCheck.) J'ai d'autres problèmes, car le menu ne glisse pas, mais j'ai confirmé avec une alerte() qu'elle entre dans la fonction hoverCheck. ne jamais dire quand appeler une fonction avec les parenthèses et quand ne pas le faire .. Quel est le secret? – Ben
@Ben - d'abord, essayez de ne jamais arriver dans une situation où vous passez une chaîne, alors les règles sont simples: parenthèses si vous voulez pour appeler la fonction * à droite puis *, sans eux vous passez la fonction elle-même, plutôt que le * résultat * (qui l'appelle vous obtiendra) de la fonction –
Un peu plus clair, mais très boueux dans mon esprit encore. vous connaissez une bonne ressource en ligne qui explique cela en détail? BTW, je l'ai eu fonctionne maintenant, le problème était que j'avais un $ (cela) qui n'avait aucun sens dans la fonction externe. J'ai dû ajouter une classe temporaire à l'élément de liste plané et la référencer de cette façon. – Ben