2013-02-13 5 views
0

다층 탐색 기능이 있습니다. 3 개로 구성되어 있습니다 (분명히 숨겨진 부 메뉴가있는 메뉴, 클릭하면 표시되는 메뉴).Jquery : submenu는 호버 기능과 함께 표시되지만 클릭 기능은 나타나지 않습니다.

두 번째 수준 <ul> 초를 표시하는 스크립트를 만들었습니다 (첫 번째 스크립트를 클릭 한 경우).

//CLICK MAIN NAV SHOW 2nd LAYER NAV 
$("#ctamenu ul li").not("#ctamenu ul li ul li, .thirdsub").click(function() { 
    $(this).children('ul').stop().delay(200).slideDown(300); 
});//END CLICK FUNCTION 

을하지만 3 수준 <ul>들이 반복 할 때 제대로 작동하지 않습니다이 잘 작동 어떤 이상한 것은

$("#ctamenu ul li ul li").click(function() { 
    $(this).find('.thirdsub').stop().show(300); 
    }); 

이 나는 ​​브라우저 display: none의 요소를 검사 할 때 css는 확실히 thirdsub 요소에서 제거됩니다. 요소가 있어야하는 곳에서 Chrome이 나를 보여주고있는 컬러 윤곽을 얻을 수도 있습니다.

$("#ctamenu ul li ul li").hover(
    function() { 
    $(this).find('.thirdsub').stop().show(300); 
    }, 
    function() { 
    $(this).find('.thirdsub').stop().hide(300); 
    } 
); 

는 사람이 가져가 작업을 할 수있는 이유를 알고 있지만 클릭하지 않을까요 :

무엇도 괴상 것은 내가 .click 변경하면 잘 작동 .hover하는 것입니다? 당신은 또한 그 부모 click 핸들러를 할당하기 때문에

+1

더 나은 표시 || 확인 CSS 및 HTML 설정. 추신. 데모는 적절하게 될 것입니다 – Yevgen

+0

보기를 원하십니까? 다른 것들이 원인 일 수 있습니다,'가시성'이'숨김'으로 설정되어 있거나'z- 인덱스 '로 위치합니까? – Paul

답변

1
$("#ctamenu ul li ul li").click(function (e) { 
    $(this).find('.thirdsub').stop().show(300); 
    e.stopPropagation(); 
    }); 

stopPropagation()을보십시오. #ctamenu ul li ul li을 클릭 할 때도 호출됩니다.