jQuery点击其他地方时菜单消失的实现方法


Posted in Javascript onApril 22, 2016

本文实例讲述了jQuery点击其他地方时菜单消失的实现方法。分享给大家供大家参考,具体如下:

<script type="text/javascript">
  function stopPropagation(e) {
    if (e.stopPropagation) 
      e.stopPropagation();//停止冒泡  非ie
    else 
      e.cancelBubble = true;//停止冒泡 ie
  }
  $(document).bind('click',function(){
    $('#test').css('display','none');
  });
  $('#test').bind('click',function(e){
  //写要执行的内容....?睦膊焕
    stopPropagation(e);//调用停止冒泡方法,阻止document方法的执行
  });
</script>

事情是这样的,比如我点击一个div显示出一个菜单,当点击其他地方,菜单消失,其中一个思路就是给document绑定上click事件,如果是点击div就显示菜单,如果是点击document就隐藏菜单,但是如果点击div也等于是点击了document,所以在点击div的事件里面执行完要执行的语句,然后终止js的冒泡,否则会既执行了div的点击事件,又继续冒泡到document事件上,执行了document的click的内容

我的意思就是div也属于document,所以点击div也是点击了document,所以在不进行任何限制的情况下,点击div的时候,div和document的方法都会执行,进行限制的具体内容就是在点击div的方法里面停止冒泡,具体方法就是用e.stopPropagation()→"适用于非ie"方法,如果是ie就是e.cancelBubble=true

还有一种思路就是在document的click方法中判断触发的源是哪一个,如果是div的话就不执行任何操作也就是return,如果不是div的话,那就将菜单隐藏具体如下

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

$(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或其子元素
});

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
用javascript为页面添加天气显示实现思路及代码
Dec 02 Javascript
javascript设置页面背景色及背景图片的方法
Dec 29 Javascript
微信小程序 简单教程实例详解
Jan 13 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
vue-cli启动本地服务局域网不能访问的原因分析
Jan 22 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
Node.js Buffer用法解读
May 18 Javascript
自定义Vue组件打包、发布到npm及使用教程
May 22 Javascript
微信小程序自定义联系人弹窗
May 26 Javascript
JS代码编译器Monaco使用方法
Jun 11 Javascript
JS验证逗号隔开可以是中文字母数字
Apr 22 #Javascript
JS简单循环遍历json数组的方法
Apr 22 #Javascript
JavaScript中数组去除重复的三种方法
Apr 22 #Javascript
IE和Firefox之间在JavaScript语法上的差异
Apr 22 #Javascript
动态加载JavaScript文件的两种方法
Apr 22 #Javascript
JavaScript记录光标在编辑器中位置的实现方法
Apr 22 #Javascript
在AngularJS中使用jQuery的zTree插件的方法
Apr 21 #Javascript
You might like
PHP中的cookie
2006/11/26 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
vue写一个组件
2018/04/09 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
Python之py2exe打包工具详解
2017/06/14 Python
python pyheatmap包绘制热力图
2018/11/09 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
python中 * 的用法详解
2019/07/10 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
经理职责范文
2013/11/08 职场文书
总经理驾驶员岗位职责
2013/12/04 职场文书
技术总监岗位职责
2013/12/05 职场文书
园林资料员岗位职责
2013/12/30 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
好媳妇事迹材料
2014/12/24 职场文书
商务宴会祝酒词
2015/08/11 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
员工给公司的建议书
2019/06/24 职场文书
Python中使用ipython的详细教程
2021/06/22 Python
阿里云日志过滤器配置日志服务
2022/04/09 Servers