我试图找到解决方案,但我不能,每一个代码都不适合我的项目。这是导航结构
<nav>
<ul class="menu">
<li>
<ul class="submenu">
<li><a></a></li>
<li><a></a></li>
<li><a></a></li>
<li><a></a></li>
</ul>
</li>
<li>
<ul class="submenu">
<li><a></a></li>
<li><a></a></li>
<li><a></a></li>
<li><a></a></li>
</ul>
</li>
<li></li>
<li></li>
</ul>
</nav>
$(".menu li").click(function(){
$(this).toggleClass("visible");
});
$('body').click(function(){
if( $(".menu li").hasClass("visible") ){
$(".menu li").removeClass("visible");
};
});
接下来想要实现的目标是什么:
.menu li
添加课程active
.menu li
项目或.submenu li a
时,请从具有该类别的另一个active
项目中删除课程li
.menu li
我希望你明白我想要的。抱歉我的语法不好
更新
修改后的代码:@Sasa Novakovic(再次感谢兄弟:))
function removeActiveMenuClass(active_element){
$('.menu li').not(active_element).removeClass('visible');
}
$( '.menu>li' ).click(function(e) {
e.stopPropagation();
var $_this = $(this);
removeActiveMenuClass($_this);
if ($_this.hasClass('visible')) {
$_this.removeClass('visible');
}
else {
$_this.addClass('visible');
}
});
$('body').click(function() {
removeActiveMenuClass();
});
答案 0 :(得分:5)
以下是您的代码jsfiddle。
$('html').click(function() {
removeActiveMenuClass();
});
$( '.menu>li, .submenu>li' ).click(function(e) {
e.stopPropagation();
removeActiveMenuClass();
$(this).addClass('active');
});
function removeActiveMenuClass(){
$('.menu li').removeClass('active');
}
答案 1 :(得分:2)
$('.submenu li').click(function(){
$('.submenu li').removeClass('addclass');
$(this).addClass('addclass');
})
$(document).mouseup(function(){
$('.submenu li').removeClass('addclass');
})
&#13;
.addclass{
background-color:red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<ul class="menu">
<li>
<ul class="submenu">
<li><a>submenu1</a></li>
<li><a>submenu2</a></li>
<li><a>submenu3</a></li>
<li><a>submenu4</a></li>
</ul>
</li>
<li>
<ul class="submenu">
<li><a>submenu1</a></li>
<li><a>submenu2</a></li>
<li><a>submenu3</a></li>
<li><a>submenu4</a></li>
</ul>
</li>
<li></li>
<li></li>
</ul>
</nav>
&#13;
答案 2 :(得分:1)
尝试将此代码段添加到HTML中:
<script>
var options = $('.menu').find('li');
options.onclick(function(){
$('.active').removeClass('active');
$(this).addClass('active');
});
$('*').not(options).click(function(){$('.active').removeClass('active')});
</script>