jquery - 如何在 jQuery 中为类的每次出现选择类的最后一个元素

标签 jquery navigation

我有一个包含 2 个子菜单的菜单。我想立即定位每个菜单中的最后一个 li a 元素,并且我希望它是动态的,因此如果添加另一个子菜单,它将找到并定位其最后一个 li a 元素。

我想在不添加比已经使用的更多的类或ID的情况下进行处理。我尝试只针对类 .sub-menu 但它只选择最后一个子菜单。有没有办法选择所有出现的情况?

<ul id="menu-main" class="menu">
 <li class="menu-item-has-children"><a href="#">About</a>
    <ul class="sub-menu">
        <li><a href="#">Our History</a></li>
        <li><a href="#">Strategic Plan</a></li>
        <li><a href="#">Board of Directors</a></li>
    </ul>
</li>
<li class="menu-item-has-children"><a href="#">Programs</a>
    <ul class="sub-menu">
        <li><a href="#">Monthly Calendars</a></li>
        <li><a href="#">Early Years</a></li>
        <li><a href="#">Children and Youth</a></li>
    </ul>
</li>
 </ul>

现在我正在努力

 $('li.menu-item-has-children:nth-child(1) li').last().focusout(function() {
    $(this).parent().parent().removeClass('hover');
    console.log("T removed");
});
$('li.menu-item-has-children:nth-child(2) li').last().focusout(function() {
    $(this).parent().parent().removeClass('hover');
    console.log("T2 removed");
});

我应该创建一个函数来为我执行此操作吗?我想一定有一种更简单的方法。

谢谢,非常感谢任何帮助。

最佳答案

使用事件委托(delegate)来处理新添加的子菜单,并简化您的选择器:

$(document).on('focusout', 'ul.sub-menu li:last-child a', function() {
    $(this).parent().parent().removeClass('hover');
    console.log("T removed");
});

关于jquery - 如何在 jQuery 中为类的每次出现选择类的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361973/

相关文章:

边框中的 flutter 箭头

jquery - Fotorama jquery - 在幻灯片上添加外部页面的链接

jquery - 如何应用bootstrap网格系统动态扩展div而不是window

asp.net-mvc - 在 Visual Studio 中快速浏览 ASP.NET MVC 应用程序

html - 作为 parent 的高度和导航栏内的位置

android - 使用导航 View 和工具栏不显示后退按钮

jquery - 将 .Net-Repeater 与 jquery 结合使用

javascript - 可能有圆形/flex 的一面,而不是 Angular 落?

jquery - 填充、边距和背景颜色不会消失

Angular:路由到带有路由子项的辅助路由