2014-07-11 2 views
1

너무 오랫동안 열어 둔 상태에서 메뉴를 만들려고합니다. 그런 다음 부모 또는 메뉴가 일정 기간 동안 마우스 오버되지 않은 경우 사라집니다..not()이 제대로 작동하지 않습니다.

메뉴에서 다른 상위 항목을 강조 표시하면 이미 존재하는 상위 항목을 제외하고 다른 모든 메뉴가 닫힙니다. 이 경우

<script> 
    $(".dropdown").mouseover(function() { 
     //Highlighting over the parent "dropdown" closes all other popup menus & 
     //displays the popup related to the parent 
     $(".menu-popup").not(this).find(".menu-popup").hide(); 
     $(this).find(".menu-popup").fadeIn("fast"); 

     //Reset the timer to hide popup if scrolling back over parent 
     //before time runs out 
     if (hideTimer !== null) { 
      clearTimeout(hideTimer); 
     } 
    }); 

    //Scrolling off of the dropdown parent will set a timer that will 
    //hide the menu-popup 
    $(".dropdown").bind("mouseout", function(){ 
     hideTimer = setTimeout(function(){ 
     $(".menu-popup").fadeOut("fast"); 
    }, 300); 

}); 
</script> 
+0

'$ ("메뉴 팝업.")하지 ($ (이) .find ("메뉴 팝업.")) (숨길) 수 있습니다,...' – Satpal

+0

@Satpal $ ("드롭 다운 ") .not (this) .find (". menu-popup "). hide(); 더 쉬울 것입니다. –

+1

@AnoopJoshi, 질문을 완전히 이해하지 못하여 '맞을 수 있습니다.' 그래, 그게 ^^^^ 쉽게 될 것 같습니다. – Satpal

답변

1

, $(this)drop-down을 의미한다 : 그것은 약자로 코드 대신 메뉴

$text .=   '<div class="dropdown">'; 
$text .=    '<a href="/products">Products</a>'; 
$text .=    '<div class="menu-popup">'; 
$text .=    '</div>'; 
$text .=   '</div>'; 

$text .=   '<div class="dropdown">'; 
$text .=    '<a href="/about">About</a>'; 
$text .=    '<div class="menu-popup">'; 
$text .=    '</div>'; 
$text .=   '</div>'; 

JQuery와 당신이

을 강조했던 제외한 모든 닫는 열린 모든 메뉴를 유지 menu-popup이 아닙니다. 그러므로 drop-down 안에 drop-down 안에 menu-popup을 찾아야합니다.

변경이

$(".menu-popup").not(this).find(".menu-popup").hide(); 

$(".dropdown").not(this).find(".menu-popup").hide(); 
단순히 다음과 같이 사용하는 것이 좋습니다
+0

나는 이것이 정답이라고 생각한다 –

+0

유권자를 부탁한다 –

+0

고마워 Anoop와 Satpal :) –

0

:

$(".menu-popup").hide();//first hide all menu-popup 
$(this).find(".menu-popup").fadeIn("fast"); //display this menu-popup only 
1

당신이 하나의 퇴색하고, 전부 not()를 제거하십시오 나중에 필요하기 때문에 모두 숨기십시오.

$(".menu-popup").hide(); 
$(this).find(".menu-popup").fadeIn("fast"); 
+0

죄송합니다 제가 틀린 대답이라고 생각합니다. 이미 팝업이 활성화 된 부모 위로 마우스를 가져 가면 팝업이 깜박 거리고 숨어있는 상태로 다시 변하기 때문입니다. – Dom

+0

잘못되었습니다. http://jsfiddle.net/DcJZk/ 코드가 실행되는 유일한 시간은 상자를 처음 입력 할 때입니다. 따라서 코드가 실행되고 이미 표시된 상자를 숨길 상황은 없습니다. 다시 페이드 인하십시오. –

+0

@Dom 나는 단지 페이드 아웃하는데 300 밀리 초의 지연이 있음을 깨달았습니다. 그래서 이론적으로 설명 할 수있는 300 밀리 초의 창이 있다고 생각합니다. –

관련 문제