2014-10-21 4 views
0

나는 stopPropagation을 사용하여/#에 링크하는 부모 메뉴 항목을 만들어 클릭 할 때 드롭 다운 하위 메뉴를 표시합니다. 클릭하면 하위 메뉴가 표시되지만 하위 메뉴를 표시하기 전에 먼저 url/#로 이동합니다. 링크를 무시하고 드롭 다운 메뉴를 표시하고 싶습니다. 내 코드는 다음과 같습니다 :jQuery : stopPropagation이있는 요소

$(document).on('click', '#navpanel .mainnav a[href^="/#"]', function(e){ 
if($(this).parent('li').hasClass('expanded')) { 
    $(this).siblings('ul').css('display', 'block').slideDown('linear', function(){ 
    $(this).parent('li').toggleClass('expanded'); 

    }); 
} else { 
    $(this).siblings('ul').css('display', 'none').slideUp('linear', function(){ 
    $(this).parent('li').toggleClass('expanded'); 
    }); 
} 
var objHeight = 0; 
$.each($('ul.tier1').children(), function(){ 
     objHeight += $(this).height(); 
}); 
$('ul.tier1').height(objHeight); 
e.stopPropagation(); 
}); 
+0

에 bubling에서 이벤트를 방지하지 *하지 * * * 표시의 기본 동작을 방지 할 수 있습니다. –

답변

2

난 당신이 바로 당신이하지 stopPropagation 필요하지만 기본을 방지 이해합니다. 링크 클릭 이벤트에 추가하십시오. 귀하의 경우 리디렉션되는 기본 동작을 사용하지 않도록 설정합니다.

e.preventDefault(); 

stopPropagation은 전파를 중지 DOM 트리