jQuery-在悬停孙辈或曾孙辈上,控制父项';s风格递归
我试图建立一个最低4级菜单(无限)。我的愿望是使用jQuery在菜单上创建一个通用的递归操作。当我悬停一个子元素时,父元素的高度会增加,同样的结果我也希望悬停任何孙子或曾孙子时,相同的父元素保持高度增加,而不是孙子或曾孙子 我试过这个: 看来我需要别的东西而不是jQuery-在悬停孙辈或曾孙辈上,控制父项';s风格递归,jquery,Jquery,我试图建立一个最低4级菜单(无限)。我的愿望是使用jQuery在菜单上创建一个通用的递归操作。当我悬停一个子元素时,父元素的高度会增加,同样的结果我也希望悬停任何孙子或曾孙子时,相同的父元素保持高度增加,而不是孙子或曾孙子 我试过这个: 看来我需要别的东西而不是 $(this.parent().parent().parent().find(“a:first”) 这不正确 任何帮助都将不胜感激 根据您的DOM结构,您需要爬树到一个祖先(悬停项的容器)并找到作为其同级的锚(导致此容器显示的更高级别菜
$(this.parent().parent().parent().find(“a:first”)
这不正确
任何帮助都将不胜感激 根据您的DOM结构,您需要爬树到一个
祖先(悬停项的容器)并找到作为其同级的锚(导致此容器显示的更高级别菜单项),其转换为:
$(this).closest("ul").siblings("a")
有了这个变化。从@Jon那里得到了一些很好的指导(非常感谢!)之后,我尝试了和之类的函数。仍然没有找到预期的结果,但我有可能知道递归父计数是如何工作的。我保留了
.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")
默认情况下,事件最多传播到父元素。为什么不直接将事件添加到父级或祖父母级?因为我将有更多的“父级”元素(在第一级),并且我希望仅在我悬停的父级的子级上增加高度,而不是在所有父级元素上。哇!一个非常好的便签。唯一的问题是,在孙子元素悬停时,子元素3的高度也会增加,而在曾孙元素悬停时,孙子元素3的高度也会增加。在当前示例中,我只想增加父级#2。当然,所有这些都是动态的,考虑在“未来”添加更多的家长。@GrávujMiklósHenrich:也许我不太明白你到底想要实现什么,这种行为在我看来是合乎逻辑的。但在任何情况下都不难适应。我只希望更改父元素,而不希望更改子元素或孙子元素。仅在示例代码中使用
Parent#2
。