最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 21:18:55
文档

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

js利用事件的阻止冒泡实现点击空白模态框的隐藏_javascript技巧:很多时候,我们做前端的时候都会有这样的小功能,点击弹出某个框框,但是,有时候不想操作,就想点击某个空白处,隐藏该框框。假设如下场景,一个小按钮,点击可以弹出一个模态框。 就这么简单,但是我们想要点击空白部分的时候隐藏模态框,加入按钮id:btn
推荐度:
导读js利用事件的阻止冒泡实现点击空白模态框的隐藏_javascript技巧:很多时候,我们做前端的时候都会有这样的小功能,点击弹出某个框框,但是,有时候不想操作,就想点击某个空白处,隐藏该框框。假设如下场景,一个小按钮,点击可以弹出一个模态框。 就这么简单,但是我们想要点击空白部分的时候隐藏模态框,加入按钮id:btn


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

就这么简单,但是我们想要点击空白部分的时候隐藏模态框,加入按钮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

文档

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

js利用事件的阻止冒泡实现点击空白模态框的隐藏_javascript技巧:很多时候,我们做前端的时候都会有这样的小功能,点击弹出某个框框,但是,有时候不想操作,就想点击某个空白处,隐藏该框框。假设如下场景,一个小按钮,点击可以弹出一个模态框。 就这么简单,但是我们想要点击空白部分的时候隐藏模态框,加入按钮id:btn
推荐度:
标签: 隐藏 空白 事件
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top