2013-02-28 125 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