2012-04-23 24 views
1

我有下面的代碼給菜單項提供了一個'current'類。然後我的風格,與font-weight:Bold;在訪問子頁面時使父菜單項變爲粗體

$(document).ready(function() { 
    var loc = window.location.href; 
    $("ul a").each(function() { 
     if (loc.indexOf($(this).attr("href")) != -1) { 
      $(this).addClass("current"); 
     } 
    }); 
}); 

如果用戶是一個網頁,其中的子菜單ul li a內就怎麼做我一個名爲Bold類在根級別添加到父UL/LI?

這裏是結構,如果我在Q & Z組然後關於我們需要大膽。 - http://jsfiddle.net/zZQy3/

+0

什麼是您的菜單的HTML結構?你是否試圖在上面的函數中將'Bold'類應用到父元素'$('ul a')'? – 2012-04-23 13:50:00

+0

這裏是結構,如果我在Q&Z組,那麼關於我們需要大膽。 - http://jsfiddle.net/zZQy3/ – 2012-04-23 14:02:38

+0

@MarkWalters,我正在嘗試添加類到'ul.sf-menu li ul li a' – 2012-04-23 14:18:01

回答

1
var loc = window.location.href; 
$("ul a").each(function() { 
    if (loc.indexOf($(this).attr("href")) != -1) { 
     $(this).addClass("current"); 
     $(this).parent('li').parent('ul').addClass("Bold"); 
    } 
}); 
+0

這隻會加粗直接父節點,它已經添加了當前類。粗體應該應用於下一個父元素li。 – 2012-04-23 13:51:41

+0

這裏是結構,如果我在Q&Z組,那麼關於我們需要大膽。 - http://jsfiddle.net/zZQy3/ – 2012-04-23 14:02:25

+0

@ sp-1986請檢查我的更新回答 – thecodeparadox 2012-04-23 14:06:50

1

如果您將當前節點作爲jQuery變量,則可以使用parent訪問其父節點。所以,你可以使用$(this).parent().addClass(...);

如果你想,而不是使用JavaScript這個邏輯,你可以使用selector

$('ul li:has(a[href=' + window.location.href + '])').addclass(...); 

這是尋找有帶有href匹配後代的任何LI當前網址的方式爲HasAttribute Equals選擇器。

+0

這隻會加粗直接父母,它已經添加了類目前爲止。粗體應該應用於下一個父元素li。 – 2012-04-23 13:51:32

+0

如果你想父母的父母作爲cale_b建議,使用'$(this).parent()。parent()。addclass()'或'$('ul li:has(li a [href ='+ window。 location.href +'])')' – 2012-04-23 13:56:58

1

您正在尋找parent

$(this).parent("li").parent("li").addClass("bold"); 

注意上面有兩位家長 - 這是因爲你的一個元素爲Li內,這是不是你想要什麼大膽。你希望THAT的李父母大膽。

+0

但是「父母()」只會前往第一位父母,而不是祖父母。 「李」不能是「李」的直接子女。 – 2012-04-23 14:07:08

相關問題