点击页面其它地方隐藏该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 相关文章推荐
在IE模态窗口中自由查看HTML源码的方法
Mar 08 Javascript
jQuery实现类似淘宝购物车全选状态示例
Jun 26 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
Oct 24 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
Bootstrap树形组件jqTree的简单封装
Jan 25 Javascript
PassWord输入框代码分享
Jun 07 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
如何在微信小程序里面退出小程序的方法
Apr 28 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
js中switch语句的学习笔记
Mar 25 Javascript
小程序表单认证布局及验证详解
Jun 19 Javascript
Vue实现手机计算器
Aug 17 Javascript
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
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python3远程监控程序的实现方法
2019/07/15 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
Python wordcloud库安装方法总结
2020/12/31 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
Java文件和目录(IO)操作
2014/08/26 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
大专学生推荐信范文
2013/11/19 职场文书
保险专业自荐信范文
2014/02/20 职场文书
一岗双责责任书
2014/04/15 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
社会工作专业求职信
2014/07/15 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL