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

 更新时间:2013年11月18日 16:39:57   作者:  
在本文为大家介绍两种思路实现点击页面其它地方隐藏该div,第一种是对document的click事件绑定事件处理程序..详情请参考本文
思路一

第一种思路分两步

第一步:对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,也能够实现我们的需求。

相关文章

  • 小程序文字跑马灯效果

    小程序文字跑马灯效果

    这篇文章主要为大家详细介绍了小程序文字跑马灯效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • JavaScript实现前端倒计时效果

    JavaScript实现前端倒计时效果

    这篇文章主要为大家详细介绍了JavaScript实现前端倒计时效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • JS 图片压缩原理与实现方法详解

    JS 图片压缩原理与实现方法详解

    这篇文章主要介绍了JS 图片压缩原理与实现方法,结合实例形式详细分析了JS 图片压缩原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-04-04
  • JavaScript 模块化开发实例详解【seajs、requirejs库使用】

    JavaScript 模块化开发实例详解【seajs、requirejs库使用】

    这篇文章主要介绍了JavaScript 模块化开发,结合实例形式详细分析了基于seajs、requirejs库的JavaScript模块化使用相关操作技巧,需要的朋友可以参考下
    2020-05-05
  • 基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动

    基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动

    这篇文章主要介绍了基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动,代码简单易懂非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • 详解小程序不同页面之间通讯的解决方案

    详解小程序不同页面之间通讯的解决方案

    这篇文章主要介绍了详解小程序不同页面之间通讯的解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • JS监听元素dom变化方案详解

    JS监听元素dom变化方案详解

    这篇文章主要给大家介绍了关于JS监听元素dom变化的相关资料,监听DOM大小的变化,在前端开发中,算是一个比较常见的需求,比如我们要制作可伸缩的图表的时候,可能需要根据DOM大小的变化,进行动态的更新图表,需要的朋友可以参考下
    2023-09-09
  • 微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

    微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

    我们在开发小程序时,如果想获取用户信息,就需要获取用的授权,如果用户误点了拒绝授权,我们怎么样去正确的引导用户重新授权呢。今天就来给大家讲讲如果正确的引导用户授权,需要的朋友可以参考下
    2019-07-07
  • js基于setTimeout与setInterval实现多线程

    js基于setTimeout与setInterval实现多线程

    这篇文章主要介绍了js基于setTimeout与setInterval实现多线程的方法,分析了多线程的原理与javascript模拟实现多线程的相关技巧,需要的朋友可以参考下
    2016-06-06
  • JavaScript表单验证实例之验证表单项是否为空

    JavaScript表单验证实例之验证表单项是否为空

    表单验证几乎在每个需要注册或者是登录的网站都是必不可少,下面通过本篇文章给大家介绍JavaScript表单验证实例之验证表单项是否为空,涉及到js表单验证实例相关知识,对js表单验证实例代码需要的朋友一起学习吧
    2016-01-01

最新评论