2011-08-30 52 views
0

考慮的下拉菜單中選擇以下HTML結構:jQuery的訪問遠離的父母

<ul class="tabMenu"> 
    <li><a href="#">Games</a> 
    <div id="sub"> 
     <ul> 
      <li><a href="#">Main</a></li>       
      <li><a href="#">3D</a></li> 
     </ul> 
    </div> 
    </li> 
    <li><a href="#">Videos</a> 
     <div id="sub"> 
      <ul> 
       <li><a href="#">Main</a></li>       
       <li><a href="#">3D</a></li> 
      </ul> 
     </div> 
    </li> 
</ul> 

在此菜單下我寫的使用jQuery的一些字符串(主頁是默認值),它告訴用戶他在哪裏:

<div class="Pointer"><a href="#">Home</a></div> 

以下jQuery是用於檢測哪個類別/子類別是trigerred:

$('.tabMenu li a').click(function() { 
      //get current link 
      var currentLink = $(this); 
      //get link text 
      var linkText = currentLink.text(); 
      //Remove all activeTab classes 
      $('.activeTab').removeClass('activeTab'); 
      //Add selected class with activeTab 
      currentLink.parent().addClass("activeTab"); 
        //Change pointer value according to the click 
      $('.Pointer a').html(linkText); 
     }); 

如果用戶從'Videos'和Games-> Main的下拉列表中點擊子類別'Main',如果用戶從遊戲中選擇Main,則Jquery函數應該返回字符串,類似於Videos-> Main。此代碼只給出主要是無論是從'遊戲'還是'視頻'點擊任何幫助將不勝感激。

回答

2

您可以使用jQuery closest獲取與選擇器相匹配的第一個祖先元素,從當前元素開始並在DOM樹中前進。

工作demo

$('.tabMenu li a').click(function() { 
      //get current link 
      var currentLink = $(this); 
      //get link text 
      var linkText = currentLink.text(); 

      //Remove all activeTab classes 
      $('.activeTab').removeClass('activeTab'); 
      //Add selected class with activeTab 
      currentLink.parent().addClass("activeTab"); 
        //Change pointer value according to the click 
      linkText = currentLink.closest('div').closest("li").children("a").text() + " > " + linkText ; 
      $('.Pointer a').html(linkText); 
     }); 
+0

真的很有幫助,完全按照我的意願工作。謝謝 – George

1

試試這個:

// Will only affect subcategory links 
$('.tabMenu li #sub a').click(function() { 
    var parentCategory = $(this).parent().parents('li:first').children('a:first').html() 
}) 
// Will only affect "Games" and "Videos" links 
$('.tabMenu > li > a').click(function() { 
    var category = $(this).html() 
}) 

當然,你可以在選擇".tabMenu li #sub a"使用這兩個,但我認爲這種方式更乾淨。

0

首先,您只能有一個相同ID的實例。 (ID = 「子」)。將其更改爲一個類。

嘗試停止事件冒泡,換句話說,確保腳本每次點擊只執行一次。