隐藏下拉菜单当其他东西被点击时,除了下拉菜单本身
hide dropdown when something else is clicked except dropdown itself
我在一个网站上有一个下拉菜单,我想隐藏它当别的东西被点击除了下拉元素本身。现在我有什么工作与jquery,但希望有相同的逻辑与香草javascript。我觉得我的jquery逻辑很笨拙,我已经思考了很长时间,我希望有一些输入。非常感谢。
$(document).on('click', function(e) {
if ( $(e.target).closest('.icon').length ) {
$('.dropdown').css('top','30px');
$('.dropdown').css('opacity','1');
}else if ( ! $(e.target).closest('.icon').length && !$(e.target).closest('.dropdown').length) {
$('.dropdown').css('opacity','0');
$('.dropdown').css('top','-530px');
}
});
试试这个,我建议修改类而不是手动修改代码中的css。
http://jsfiddle.net/dlizik/xeLbrnob/(function(box, faded) {
var elem = document.querySelector("."+box);
var settings = {
elem: elem,
classes: elem.className.split(" "),
toggle: faded
};
window.addEventListener("click", clickHandler, false);
function clickHandler(e) {
if (e.target !== elem) modifyClass.call(settings, false);
if (e.target == elem) modifyClass.call(settings, true);
}
function modifyClass(bool) {
var index = this.classes.indexOf(this.toggle);
if (bool === true && index > -1) this.classes.splice(index, 1);
if (bool === false && index < 0) this.classes.push(this.toggle);
this.elem.className = this.classes.join(" ");
}
})("box", "faded");
相关文章:
- 基于其他下拉菜单选择隐藏/显示下拉菜单
- 单击下拉菜单隐藏其他下拉菜单
- 删除其他下拉菜单中的选定项目
- 如何在jquery中使用其他下拉菜单来设置下拉菜单的文本和值
- 下拉菜单的第一个选项不是一个选项;强制使用其他选项
- 在任一下拉列表中选择“其他”时,两个下拉菜单将打开一个文本框
- 打开下拉菜单,单击页面上的其他位置
- 单击以关闭移动设备上的jQuery下拉菜单,同时保留其他行为
- 边栏,从下拉菜单中选择不会触发其他过滤器
- 点击触摸设备上的其他位置,关闭CSS下拉菜单
- 我的下拉菜单会向下推其他所有内容
- 当用户单击页面上的其他位置时,如何关闭自定义下拉菜单
- 下拉菜单选择了与其他字体不同的选项
- Joomla下拉菜单在其他模块后面
- 点击其他地方时需要关闭下拉菜单
- Javascript下拉菜单点击,(关闭其他,当一个打开)
- 引导下拉菜单隐藏在其他元素后面
- 根据JS/Jquery中的其他下拉菜单更改FORM SELECT(下拉菜单)
- jQuery显示/隐藏选项从一个选择下拉菜单,当其他选择下拉菜单的选项被选中,而不改变当前选项
- 如果用户选择“其他”,则显示一个文本框;在从数据库检索到的下拉菜单上