スコープ外の問題など、ある種の変数があります。以下の関数では、マウスが入っているか出ているかに基づいてタイムアウトを作成またはクリアしています。ただし、タイムアウトが作成された後でも、再入力時に未定義が返されるようです。私がここで何を間違っているのかわからない、あなたの助けに感謝します!
JavaScript:(特定の問題はelse
35行目の条件付きです
var navLinks = $('nav li.sub');
navLinks.mouseenter(function(){
console.log('hovering on link');
var thiis = $(this),
subList = thiis.find('ul'),
autoClose;
if (!thiis.hasClass('out')){
console.log('isnt out');
/* Link */
thiis
/* Show submenu when entering link */
.addClass('out')
/* Hide submenu when exiting link */
.mouseleave(function(){
autoClose = setTimeout(function(){
thiis.removeClass('out');
}, 1000);
console.log('exiting link: timeout active', autoClose);
});
} else {
console.log ('is out', autoClose);
if (autoClose){
console.log('is out: clear timeout');
clearTimeout(autoClose);
}
}
});