2013-03-14 35 views
4

解決方案:jQuery:僅在父鏈接上使用preventDefault

找到了解決方案。

二手parentNode:

$('.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 class="parent"> 
    <a href="url">Link title parent</a> 
    <ul> 
     <li><a href="url">Link title child</a></li> 
    </ul> 
    </li> 
</ul> 

我試圖jQuery中的以下內容:

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

然而,這將禁用所有整個菜單結構中的元素即我只想禁用父鏈接。那些在「ul li」中,而不是「ul ul li」中的鏈接,但我無法弄清楚我是如何搜索和搜索的。所以請幫助我!


編輯:謝謝你的答案。我想我會簡化我的代碼,但實際上並沒有使我受益。因此,繼承人的實際代碼我使用:

$('.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(); 

一點也沒有't work ..

+0

考慮更改您的選擇,以點帶錨點標籤而不是LI:$('。parent a') – 2013-03-14 19:05:02

+0

您是否試過'$('。parent a')。click(function(e){ e.preventDefault(); });'? – Sven 2013-03-14 19:05:04

回答

7

奧斯汀Mullins的答案類似,我想你想要這樣的:

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

謝謝,請參閱我對這個問題的編輯。 – user2171247 2013-03-14 20:59:42

+1

這就是我所說的範圍蠕變。 :) – 2013-03-14 22:56:35

+0

你絕對正確:-)猜測,我瞭解到我的錯誤,並將從我用過的另一次實際代碼開始:D – user2171247 2013-03-14 23:17:52

0

試試這個:

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

>只與前一個標籤的直接子代匹配。