2013-02-28 119 views
0

我試圖建立一個最低4級菜單(無限)。我的願望是用jQuery在菜單上創建一個通用的遞歸動作。當我徘徊一個子元素時,父母的身高會增加,當徘徊任何大孩子或曾祖父孩子時,父母的身高也會增加,同樣的父母元素的身高也會增加,而不是大孩子或曾孫子女。jQuery - 關於懸停孫子或孫子孫女,控制父母的風格遞歸

我已經試過這樣:http://jsfiddle.net/dTqX3/

它看起來像我需要的東西,而不是

$(this).parent().parent().parent().find("a:first")

其中工程不當人。

任何幫助將不勝感激!

+0

活動傳播到默認父元素。爲什麼不把你的活動添加到父母或祖父母呢? – Blazemonger 2013-02-28 20:25:00

+0

因爲我會有更多的「父」元素(在第一級),我希望只有父母在我父母身上徘徊它的後代,而不是在所有父母元素上才能增加身高。 – 2013-02-28 20:27:42

回答

0

從@Jon獲得了一些很好的方向之後(非常感謝!)我嘗試了.parentsUntil().parents()等功能。預期的結果仍然沒有找到,但我有可能有一個想法如何工作這個遞歸父數。我保留了.parents()的方式並添加了.last()。下一個代碼的伎倆:

$(this).parents('ul > li').last().find("a:first").attr('style', 'height:55px;line-height:55px;'); 

這是重要的部分:

$(this).parents('ul > li').last().find("a:first") 

DEMO

1

根據您的DOM結構,您需要爬上樹到一個<ul>祖先(容器的物品被徘徊),並找到它的兄弟的錨點(導致該容器顯示的更高級菜單項),其翻譯爲:

$(this).closest("ul").siblings("a") 

隨着這種變化it seems to work just fine

+0

哇!一個非常好的方法。唯一的問題是,對於大孩子元素的盤旋,3號兒童的身高也會增加,而大孫子元素盤旋的高度也會增加3號孫子。我想在目前的例子中只增加父母#2。當然,所有這些都是動態的,想在未來增加更多的家長。 – 2013-02-28 20:57:22

+0

@GrávujMiklósHenrich:可能我不太清楚你想要達到什麼目的,這種行爲對我來說似乎是合乎邏輯的。但在任何情況下都不難適應。 – Jon 2013-02-28 21:00:43

+0

我想僅更改父元素,而不是子元素或大孩子元素。只有示例代碼中的「Parent#2」。 – 2013-02-28 21:03:20