2013-03-14 5 views
4

해결 방법 :jQuery : 부모 링크에서만 preventDefault

해결책을 찾았습니다.

중고 인 parentNode : 그러나이 모든 비활성화

$('.parent').click(function(e) { 
    e.preventDefault(); 
}); 

을 : 나는 jQuery를에 다음과 같은 시도

<ul> 
    <li class="parent"> 
    <a href="url">Link title parent</a> 
    <ul> 
     <li><a href="url">Link title child</a></li> 
    </ul> 
    </li> 
</ul> 

:

$('.skaftetopmenu-li > a').click(function(e) { 
    e.preventDefault(); 
    var subid = $(this.parentNode).attr('id'); 
    if (subid !="forsidemenu"){ 
     var str = $('#submenu-content-'+subid).html(); 
     if ($.trim(str) == ""){ 
     $('.submenu-content', this.parentNode).load('http://' + skafte.base_url + '/inc/top-menu-subs/'+subid+'_submenu.html'); 
     } 
    } 
}); 

나는이 같은 메뉴가 있습니다 전체 메뉴 구조체의 요소 이자형. 상위 링크 만 비활성화하고 싶습니다. "ul li"에있는 링크가 아니라 "ul ul li"에있는 링크가 아닌데, 어떻게 검색했는지 검색 할 수 없습니다. 그래서 제발 도와주세요!


편집 : 답변 해 주셔서 감사합니다. 나는 문제의 코드를 단순화 할 것이라고 생각했지만 사실은 그다지 나를 보상하지 못했다. 그래서를 heres 내가 사용하고 실제 코드 :

$('.skaftetopmenu-li').click(function(e) { 

    var subid = $(this).attr('id'); 

    if (subid !="forsidemenu"){ 

     var str = $('#submenu-content-'+subid).html(); 

     if ($.trim(str) == ""){ 

     $('.submenu-content', this).load('http://' + skafte.base_url + '/inc/top-menu-subs/'+subid+'_submenu.html'); 
     } 
    } 
}); 

그리고 HTML :

<li class="skaftetopmenu-li" id="priser"> 
    <a href="http://<?php echo DOMAIN?>/priser.php">Priser &amp; Sortiment</a> 
    <div class="submenu-content" id="submenu-content-priser"></div> 
</li> 

난 당신이 제안으로 수행하고로 설정하려고하면 :

$('.skaftetopmenu-li > a').click(function(e) { 
    e.preventDefault(); 

그것은 아무튼 작동하지 않습니다.

+0

를 가리 키도록 선택을 변경하십시오 오스틴 멀린스 '대답 유사 –

+0

$ ('. 부모 a')를 사용해 보셨습니까? (function (e) { e.preventDefault(); }); – Sven

답변

7

, 난 당신이 원하는 생각 앵커 태그 대신 LI : $ ('. 부모 a')
+0

고맙습니다. 질문에 대한 편집을 참조하십시오. – user2171247

+1

그건 내가 스코프 크리프라고 부르는 것입니다. :) –

+0

귀하의 절대적으로 올바른 :-) 추측, 내 실수를 배웠고 다른 시간에 사용 된 실제 코드로 시작할 것입니다 : D – user2171247

0

시험해보기 :

$(".parent > ul > li > a").click(function(e) { 
    e.preventDefault(); 
    // ... 
}); 

>은 이전 태그의 직계 하위 항목과 만 일치합니다. 이 jsbin에 나를 위해 작동

$('li.parent > a').click(function(e) { 
    e.preventDefault(); 
});