点击页面其它地方隐藏该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 相关文章推荐
jquery ajax修改全局变量示例代码
Nov 08 Javascript
html的DOM中document对象anchors集合用法实例
Jan 21 Javascript
js实现字符串转日期格式的方法
May 20 Javascript
JSON字符串转换JSONObject和JSONArray的方法
Jun 03 Javascript
Bootstrap实现弹性搜索框
Jul 11 Javascript
jQuery遍历节点树方法分析
Sep 08 Javascript
浅谈JavaScript的闭包函数
Dec 08 Javascript
浅谈jQuery中事情的动态绑定
Feb 12 Javascript
vue 设置 input 为不可以编辑的实现方法
Sep 19 Javascript
使用Vue生成动态表单
Nov 26 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
Jul 17 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 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
php常用Stream函数集介绍
2013/06/24 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
经典婚礼主持开场白
2014/03/13 职场文书
安全协议书范本
2014/04/21 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
群众路线个人整改方案
2014/10/25 职场文书
试用期辞职信范文
2015/03/02 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
Pygame Time时间控制的具体使用详解
2021/11/17 Python