点击页面其它地方隐藏该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 相关文章推荐
javascript类继承机制的原理分析
Sep 12 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 Javascript
JS判断表单输入是否为空(示例代码)
Dec 23 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
JavaScript绑定事件监听函数的通用方法
May 14 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
利用React-router+Webpack快速构建react程序
Oct 27 Javascript
遍历json 对象的属性并且动态添加属性的实现
Dec 02 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
了解JavaScript表单操作和表单域
May 27 Javascript
Vue实现星级评价效果实例详解
Dec 30 Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 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文本转图片自动换行的方法
2013/03/13 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
PyTorch中permute的用法详解
2019/12/30 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
如何使用Pytorch搭建模型
2020/10/26 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
教育学习自我评价
2014/02/03 职场文书
财务科科长岗位职责
2014/03/10 职场文书
环境保护标语
2014/06/20 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
社区元宵节活动总结
2015/02/06 职场文书
小学运动会入场口号
2015/12/24 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python