2009-10-08 3 views
0

도움을받을 수 있기를 바랍니다. 나는 Jquery와 JavaScript에 익숙하지 않고 "setTimeout"함수를 고수했다. 내 탐색 모음에서 작업하고 있는데 기본적으로 앵커 태그를 "클릭"할 때 페이드 인하려면 div (하위 메뉴)가 필요하고 마우스를 다른 탐색 링크로 이동하면 모두 사라지도록 페이드 아웃합니다. 마우스를 나뭇잎과 같이 : 클릭에jQuery 함수에 대해 "settimeout"을 올바르게 설정하는 방법은 무엇입니까?

  1. 쇼 그러나이 몇 초

  2. 숨기기 마우스가 DIV 잎 후 경우 후 숨 깁니다.

이것은 내가 지금까지있어 무엇 :

setTimeout을 제외하고 예상대로 작동
$("a").click(function() { 
    $("#sub_nav").fadeIn(400); 
}); 

$("#sub_nav").mouseleave(function() { 
    $(this).fadeOut(0); 
}); 

$("#sub_nav").mouseenter(function() { 
    if(this) { 
     $(this).show(0); 
    } else { 
     setTimeout(function() { 
      $(this).fadeOut(0); 
     }, 2000); 
    }; 
}); 

.

내가 얻을 수있는 모든 도움을 감사드립니다.

+0

'만약이 (가) 거짓'이라고 생각하지 않습니다. – vava

답변

1
$("#sub_nav").mouseenter(function() { 
    if (!$(this).is(':animated')) { 
     var el = this; 
     setTimeout(function() { 
      $(el).fadeOut(0); 
     }, 2000); 
    } 
}); 

'this'는 입력 된 함수의 범위 내에서 'window'객체입니다. 요소에 대한 참조를 저장해야합니다.

나는 제거 귀하의 경우 (이) 항상 true로 평가 것이며, 디버깅 있다면 나는 확실히 아니었지만, 올바른 해결책이 아닌 경우 당신은 아마 예로 사용할 수 있기 때문이다.

+0

Meder에게 감사드립니다. 나는 그렇게 빨리 대답을 기대하지 않았습니다. 나는 당신의 제안을 시도했지만 그것이 내가 원하는 것을 성취하지 못하는 것 같습니다. 나는 그것을 디버깅하려하지 않았다. 나는 그것을 더 잘 설명하려고 노력할 것이다. 링크를 클릭하면 하위 메뉴가 사라지고 마우스가 하위 메뉴로 이동하면 계속 표시되고 그렇지 않으면 하위 메뉴가 몇 초 후에 사라집니다. 또는 마우스를 하위 메뉴로 이동하고 마우스를 놓으면 사라집니다. 그래서 "if"문을 사용했습니다. 어떤 아이디어? 감사합니다 –

+0

Lol - 설명이 혼란 스럽습니다. 그러나 fadeIn에서 애니메이션되지 않으면 fadeOut이 될 것이므로 내 코드 주위에 if를 추가했습니다. 내 논리가 정확한지조차 모르겠다. jsbin.com에 던져 넣을 수있는 예가 있는가? –

+0

죄송 합니다만, 때로는 말로 표현하기가 어렵습니다. 원하는 경우 http://173.9.165.254/sites/www.madphotoge.com/ 에서 '출시'를 클릭하면 하위 메뉴가 표시됩니다. 다른 것을 생각해야한다고해도 나는 당신의 도움에 감사하고 있습니다. –

관련 문제