点击页面其它地方隐藏该div的两种思路


Posted in Javascript onNovember 18, 2013

思路一

第一种思路分两步

第一步:对document的click事件绑定事件处理程序,使其隐藏该div

第二步:对div的click事件绑定事件处理程序,阻止事件冒泡,防止其冒泡到document,而调用document的onclick方法隐藏了该div。

<script type="text/javascript"> 
function stopPropagation(e) { 
if (e.stopPropagation) 
e.stopPropagation(); 
else 
e.cancelBubble = true; 
} $(document).bind('click',function(){ 
$('#test').css('display','none'); 
}); 
$('#test').bind('click',function(e){ 
stopPropagation(e); 
}); 
</script>

这样当点击页面非div区域的时候,直接或层层冒泡会调用document的onclick方法,隐藏该div,而点击div或其子元素的时候,事件总会冒泡的div本身,这时候会阻止事件继续冒泡,不会调用doument的onclick方法致使div被隐藏,从而完成了我们的需求。

思路二

我们之前提到,在触发DOM上的某个事件的时候会产生一个事件对象event,这个对象包含着所有与事件有关的信息,包括产生事件的元素、事件类型等相关信息,思路一中div的click事件处理程序传入的参数就是这个event对象。访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法。直接为DOM元素添加事件处理程序时,event对象作为window对象的一个属性存在。

event对象包含了一个重要属性:target(W3C)/srcElement(IE),这个属性标识了触发事件的原始元素,思路二就是要利用这个属性。我们可以直接对document的click事件绑定事件处理程序,在事件处理程序中判读事件源是否为id==test的div元素或其子元素,如果是则方法return不做操作,如果不是则隐藏该div。

<script type="text/javascript"> 
$(document).bind('click',function(e){ 
var e = e || window.event; //浏览器兼容性 
var elem = e.target || e.srcElement; 
while (elem) { //循环判断至跟节点,防止点击的是div子元素 
if (elem.id && elem.id=='test') { 
return; 
} 
elem = elem.parentNode; 
} $('#test').css('display','none'); //点击的不是div或其子元素 
}); 
</script>

这样当点击页面任何地方的时候都会层层冒泡至document的click事件,事件处理程序会判断事件源是否为id==test的div或其子元素,如果是方法return,否则隐藏该div,也能够实现我们的需求。
Javascript 相关文章推荐
MooBox 基于Mootools的对话框插件
Jan 20 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
Mar 03 Javascript
Javascript复制实例详解
Jan 28 Javascript
js基于cookie方式记住返回页面用法示例
May 27 Javascript
关于iframe跨域POST提交的方法示例
Jan 15 Javascript
基于JavaScript实现的插入排序算法分析
Apr 14 Javascript
JS实现简单抖动效果
Jun 01 Javascript
利用纯JS实现像素逐渐显示的方法示例
Aug 14 Javascript
了解JavaScript函数中的默认参数
May 30 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
Oct 18 Javascript
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
JS 屏蔽键盘不可用与鼠标右键不可用的方法
Nov 18 #Javascript
Jquery取得iframe下内容的方法
Nov 18 #Javascript
JavaScript实现的日期控件具体代码
Nov 18 #Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 #Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 #Javascript
js call方法详细介绍(js 的继承)
Nov 18 #Javascript
jQuery操作Select的Option上下移动及移除添加等等
Nov 18 #Javascript
You might like
Apache服务器无法使用的解决方法
2013/05/08 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
利用javascript查看html源文件
2006/11/08 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
Python3遍历目录树实现方法
2015/05/22 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
python实现flappy bird小游戏
2018/12/24 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
入团者的自我评价分享
2013/12/02 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
模具专业求职信
2014/06/26 职场文书
政府四风问题整改措施
2014/10/04 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
2019秋季运动会口号
2019/06/25 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python