首页 web前端 js教程 js利用事件的阻止冒泡实现点击空白模态框的隐藏_javascript技巧

js利用事件的阻止冒泡实现点击空白模态框的隐藏_javascript技巧

May 16, 2016 pm 05:02 PM
模态框 阻止冒泡

很多时候,我们做前端的时候都会有这样的小功能,点击弹出某个框框,但是,有时候不想操作,就想点击某个空白处,隐藏该框框。假设如下场景,一个小按钮,点击可以弹出一个模态框。

就这么简单,但是我们想要点击空白部分的时候隐藏模态框,加入按钮id:btn,模态框id:model

也许我们最简单的思路就是直接在document上监听一个事件,伪代码如下:

按钮点击弹出事件监听:

复制代码 代码如下:

$("#btn").bind("click",function(e){
if(e.stopPropagation){//需要阻止冒泡
e.stopPropagation();
}else{
e.cancelBubble = true;
}
})

复制代码 代码如下:

$(document).bind("click",function(e){
if(点击事件不在model上){
隐藏模态框;
}
})

乍一看,这是没有问题的,但是,其实有很多问题,首先,我们得注意阻止冒泡,否则,点击按钮,实际是触发了上面两个事件,modal是弹不出来的,其实是弹出来了,立马又隐藏了,而且,当我们在模态框上还有许多小控件的时候,我们对于模态框中的点击就很难进行判断。

这里,我认为有一种最经典的方法,很简单,但是很巧妙,

首先,对于模态框监听一个事件如下:
复制代码 代码如下:

$("#modal").bind("click", function(event) {
if (event && event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}

});

只是简单阻止模态框中的点击事件冒泡,

然后:
复制代码 代码如下:

$(document).one("click", function(e){
var $target = $(e.currentTarget);
if ($target.attr("id") != "modal") {
$("#modal").css("display", "none");
}
});

搞定,so easy
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

有效阻止事件冒泡的方法 有效阻止事件冒泡的方法 Feb 19, 2024 pm 08:25 PM

有效阻止事件冒泡的方法

如何使用Vue实现模态框特效 如何使用Vue实现模态框特效 Sep 22, 2023 am 10:36 AM

如何使用Vue实现模态框特效

HTML、CSS和jQuery:构建一个漂亮的模态框 HTML、CSS和jQuery:构建一个漂亮的模态框 Oct 25, 2023 pm 12:03 PM

HTML、CSS和jQuery:构建一个漂亮的模态框

Vue 中如何实现对话框及模态框? Vue 中如何实现对话框及模态框? Jun 25, 2023 am 09:26 AM

Vue 中如何实现对话框及模态框?

哪些JS事件不会向上传播? 哪些JS事件不会向上传播? Feb 19, 2024 am 08:17 AM

哪些JS事件不会向上传播?

精通阻止事件冒泡的命令技巧! 精通阻止事件冒泡的命令技巧! Feb 18, 2024 pm 10:31 PM

精通阻止事件冒泡的命令技巧!

Vue组件开发:模态框组件实现方法 Vue组件开发:模态框组件实现方法 Nov 24, 2023 am 08:26 AM

Vue组件开发:模态框组件实现方法

如何使用 JavaScript 实现模态框功能? 如何使用 JavaScript 实现模态框功能? Oct 20, 2023 pm 04:46 PM

如何使用 JavaScript 实现模态框功能?

See all articles