我有一个包含许多子菜单的代码,它们共享相同的类名.
这是一个结构:
.menu .sub-menu .sub-menu .sub-menu .sub-menu .sub-menu .sub-menu .elem .elem .sub-menu
请注意,.sub菜单可能是无限级别的深度.
那么我该如何实现这一点:当单击.elem时,我想向上遍历DOM,直到达到最顶部的.sub-menu并对其应用样式.我知道.closest()和.parent()和.find(),但我不知道jQuery是否有像.topMost(selector)这样的功能?
我能想到的唯一方法是运行一个循环并通过新元素的.closest(‘.子菜单’),直到它的长度为零(没有更多的父级有这个类,所以它必须是顶级的-最).但是,我认为应该有一个更实际的方法.
解决方法
假设“最接近的对面”你想要’最远’的父元素,你可以使用parents().last(),如下所示:
$('.elem').click(function() { var $topSubMenu = $(this).parents('.sub-menu').last(); });
注意,你想要数组中的最后一个元素,因为jQuery遍历DOM,所以顶级项目将是集合中的最后一个.