2012-04-23 45 views
0

我試圖在導航菜單中基於子菜單懸停的切換最接近的父a:link的CSS類。我可以讓它爲最接近的父母<li>標記工作,但不是我想讓此事件發生的a:link標記。JQuery選擇最接近的父a:鏈接

的HTML:

<ul class="menu"> 
    <li><a href="#">First Parent</a> 
    <ul class="sub-menu"> 
      <li><a href="#">First Child</a></li> 
      <li><a href="#">Second Child</a></li> 
    </ul></li> 
    <li><a href="#">Second Parent</a> 
    <ul class="sub-menu"> 
      <li><a href="#">First Child</a></li> 
      <li><a href="#">Second Child</a></li> 
    </ul></li> 
</ul> 

所以,我寫的函數來選擇父<li>這是工作是:

$("ul.sub-menu").hover(function(){ 
     $(this).closest("li").toggleClass("parenthovered"); 
}); 

,但我怎麼能得到這個類來切換爲a:link的父母在​​?就像:

$("ul.sub-menu").hover(function(){ 
     $(this).closest("li a").toggleClass("parenthovered"); 
}); 

但這當然不起作用,我只是不知道我需要改變什麼語法。

非常感謝。

+0

您的HTML似乎有錯誤。 – thecodeparadox 2012-04-23 15:43:17

+0

嘗試'.closest(「li」)。find('a')'? – adeneo 2012-04-23 15:44:32

回答

2
$("ul.sub-menu").hover(function(){ 
    $(this).siblings('a').toggleClass("parenthovered"); 
}); 

DEMO

+0

似乎沒有給我想要的效果 - http://jsfiddle.net/2KhnX/ – RCNeil 2012-04-23 16:07:28

+0

@RCNeil更新了您的HTML答案 – thecodeparadox 2012-04-23 16:11:02

+0

http://jsfiddle.net/2KhnX/8/ - 這就是我獲得。子菜單位於它的父母'

  • '標籤內,就像您建議的一樣。 – RCNeil 2012-04-23 16:13:53

    2

    您可以隨時使用:

    $("ul.sub-menu").hover(function(){ 
          $("a", $(this).closest("li")).toggleClass("parenthovered"); 
        }); 
    
    1

    你可以簡單地find<li>內部嵌套<a>你已經有了。

    1

    使用find方法在標籤中獲取標籤。

    $("ul.sub-menu").hover(function(){ 
         $(this).closest("li").find("a").toggleClass("parenthovered"); 
    });