点击打开子菜单,下次点击关闭 - 这就是我想要实现的目标。示例是this page('关注'链接下的子菜单) 它打开子菜单(添加类'打开'),但不关闭。卡住...... :(
我的HTML:
<ul id="toggle"><li>
<a href="#">Menu</a>
<ul id="dropdown" class="dropdown-menu" role="menu">
<li><a href="#">2017</a></li>
<li><a href="#">2012</a></li>
<li><a href="#">2003</a></li>
</ul>
</li>
<li><a href="#">Contact</a></li>
</ul>
的javascript:
$(document).ready(function(){
$('#toggle li').on('click', function(){
$(this).removeClass('open').addClass('open');
});
});
答案 0 :(得分:6)
您可以使用函数toggleClass()
:
$('#toggle li').on('click', function () {
$(this).toggleClass('open')
});
这是一种略有不同的方法:
的jQuery
$('#toggle li').on('click', function () {
$(this).find('ul').slideToggle();
});
CSS
#toggle li ul {
list-style-type: none;
left:0;
position:absolute;
display: none;
}
为防止重定向,您必须使用.preventDefault()
:
$('#toggle li:has(#dropdown)').on('click', function (event) {
if ($(event.target).parents('#dropdown').length > 0) {
event.stopPropagation();
} else {
event.preventDefault();
}
$(this).find('ul').slideToggle();
});
我不确定这是否是最干净或最好的方法,但它正在发挥作用。
如果您想保存网址以供进一步使用(例如通过window.location
重定向),您可以将href-attribute分配给变量:
var href = $(this).find('a').attr('href');
<强>参考强>
答案 1 :(得分:2)
改为使用toggleClass
。
$(document).ready(function(){
$('#toggle li').on('click', function(){
$(this).toggleClass('open');
});
});
答案 2 :(得分:2)
您正在寻找的是.toggleClass()功能:
$(document).ready(function(){
$('#toggle li').on('click', function(){
$(this).toggleClass('open')('open');
});
});
你做错了是,你链接了添加和删除功能:
$(this).removeClass('open').addClass('open');
这将取消课程&#39; open&#39;并且(当这是finsihed时)添加课程&#39; open&#39;再次。这导致了班级不会消失。
答案 3 :(得分:2)
在jquery中使用toggleClass()函数
$('#toggle li').on('click', function () {
$(this).toggleClass('open')
});
答案 4 :(得分:1)
它是因为你要删除该类然后添加它...所以它总是会被添加
$(this).removeClass('open');
关闭它。
改为使用
$(document).ready(function(){
$('#toggle li').on('click', function(){
$(this).toggleClass('open');
});
});
答案 5 :(得分:1)
$(document).ready(function(){
$('#toggle li').on('click', function(){
$(this).toggleClass('open');
});
});
使用toggleClass()函数。
答案 6 :(得分:1)
请执行以下操作:
$(document).ready(function(){
$('#toggle li').on('click', function(){
$(this).toggleClass('open');
});
});