jquery - "Find"ul li 嵌套在 ul li 中

标签 jquery

我在选择ul-->li's嵌套在里面时遇到问题驻留在父级 ul --> li 内的 div。这是我的代码:

// Navigation
$(document).ready(function() {

    // Click function

    $(".sidebar ul li a").on("click", function() {
        $(this).parent().addClass('open').find("ul.submenu").stop("true", "true").slideDown().addClass('active');
        $(this).parent().siblings().removeClass('open').find("ul.submenu").stop("true", "true").slideUp().removeClass('active');
        $(this).parent().siblings("ul.submenu.ul.li a").removeClass('open'); //<-- This is not working.
    });

    $(".sidebar ul li ul li a").on("click", function() {
        $(this).parent().addClass('open');
        $(this).parent().siblings().removeClass('open');
    });
});

我评论说该部分不起作用,其余部分都工作正常。 基本上,第一个函数将类 .open 添加到单击的 li 中,并打开包含子元素的嵌套 div ul,如果单击另一个li,下一行将删除该类并关闭div

第二组负责在 ul li ul li 中添加和删除公开课。

问题出在第一组的第三个函数中,当单击 ul li 时,该函数应该从所有 ul li ul li 中删除开放类。

提前谢谢您。

最佳答案

首先,您应该注意第二次点击绑定(bind)是不必要的,因为您想要使用 ".sidebar ul li ul li a" 定位的元素已经由 ".sidebar 定位ul li a" 因为您没有使用直接后代选择器 >,并且由于您在两个函数中执行相同的操作,因此您可以将其删除。

正如阿伦在他的回答中评论的那样,您使用的是类选择器而不是后代选择器,但我仍然不相信修复它会给您带来您想要的结果。我相信这样做会对您有用:

$(".sidebar ul li a").on("click", function() {
    $(".open").not($(this).parents('li')).removeClass('open');
    $(this).parent().addClass('open').find("ul.submenu").stop("true", "true").slideDown().addClass('active');
    $(this).parent().siblings().find("ul.submenu").stop("true", "true").slideUp().removeClass('active');
});

关于jquery - "Find"ul li 嵌套在 ul li 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18351234/

相关文章:

jquery - 为什么替换 html 时的 Backbone 事件不起作用?

javascript - 使用 jQuery 填充一个数组以包含 html 选择列表中的所有值

jQuery 选择由 php 脚本生成的元素

javascript - 为什么 Jquery 倒计时器不接受 PHP 日期?

jquery可拖动到可排序的 strip id中

php - Jquery::Ajax 驱动的进度条?

javascript - jQuery 触发器在克隆后不触发

javascript - Jquery:使用单个按钮显示/隐藏菜单

javascript - jquery 滚动事件多次运行代码

c# - 固定间隔后刷新更新面板