我在选择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/