下拉菜单,如果类已打开,则删除该类
dropdown menu , remove class if its open
我正在尝试创建下拉菜单,我是这样做的,默认情况下,在下拉菜单上我正在进行
.dropdown {
display: none;
}
然后我在点击时创建事件,并基于该上下文切换类
.active { display block; }
现在我不知道当我点击其他按钮或在文档中时如何删除.active
类,如果用户点击其他按钮演示
http://jsfiddle.net/pnLkpxkb/8/
$(function () {
// The user clicks anywhere in the document
$(document).click(function (e) {
// If a dropdown has a class active AND if the dropdown or the link is not the target of the click
if ($("ul.dropdown").hasClass("active") && !$("ul.dropdown, .btn > a").is(e.target)) {
// Remove class active
$("ul.dropdown.active").removeClass("active");
}
});
var dropdown = $(".btn > a");
// The user clicks on a toggle link (One or Two)
dropdown.on("click", function () {
// Remove the active class from the active element
$("ul.dropdown.active").removeClass("active");
// Add class to the relevant sub menu
$(this).siblings("ul.dropdown").addClass("active");
});
}());
评论后更新
您不需要将""
与this
关键字放在一起。您的代码行应该是:
$(this).siblings("ul.dropdown").toggleClass("active");
完整代码
$(function () {
var dropdown = $(".btn").find("a");
dropdown.on("click", function() {
$("ul.dropdown.active").removeClass("active"); //added new line
$(this).siblings("ul.dropdown").toggleClass("active");
});
}());
使用Remove Class更新代码
toggleClass无法按您的意愿工作。对于你的情况,我建议走这条路:
$(function () {
var dropdown = $(".btn").find("a");
dropdown.on("click", function() {
$("ul.dropdown").removeClass("active");//add this to remove class from all ul .dropdowns
$(this).siblings("ul.dropdown").addClass("active");//Add class to your ul dropdown. Here you can use toggleClass too
});
}());
小提琴
$(function () {
$(document).on('click', function () {
$("ul.dropdown").removeClass('active');
});
$(".btn a").on("click", function (e) {
e.stopPropagation();
$("ul.dropdown").removeClass('active');
$(this).siblings("ul.dropdown").addClass("active");
});
});
JSFiddle演示。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如果另一个属性相同,请删除该属性
- Wordpress TinyMCE在从文本切换到视觉时,如果锚标记包裹块元素,则会删除锚标记
- 如果用户选择离开网页,如何删除记录
- 如果screen.height低于460px,请删除一个类
- 如果今天是会计年度的最后一天,请从下拉菜单中删除当前年份
- 我想限制用户在jquery中输入文本后面的空格,如果它在文本后面,我会删除空格
- 使用jquery如何自动删除下拉列表中的第一个空白选项(如果它依赖于另一个选项)
- 仅JavaScript-删除某些类(如果存在)
- javascript页面加载检查是否存在具有特定类的span(在<tr>下),如果不存在,则删除整个<
- 从数组中删除值,用新的数组总数更新html或'$'如果没有总计
- 如果存在Javascript,请删除多个类中的一个
- 如果el包含此文本,请从中删除此字符串
- 在更改时,如果没有使用jquery更改,也可以删除对select元素的关注
- 如果他们不这样做,就从我的数组中删除东西't没有前缀
- JavaScript 属性删除如果为假,则不删除,如果为真循环
- 如何在单击时向数组添加值(Javascript)并将其删除(如果它已经在)