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车架号识别/验证函数代码 汽车车架号验证程序
Jan 08 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
Dec 12 Javascript
深入了解Node.js中的一些特性
Sep 25 Javascript
浅析node.js中close事件
Nov 26 Javascript
用file标签实现多图文件上传预览
Feb 14 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
菊花转动的jquery加载动画效果
Aug 19 jQuery
vue展示dicom文件医疗系统的实现代码
Aug 27 Javascript
vue中created和mounted的区别浅析
Aug 13 Javascript
Element 默认勾选表格 toggleRowSelection的实现
Sep 04 Javascript
JS实现星星海特效
Dec 24 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 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+mysql分页代码详解
2008/03/27 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
js 对象使用的小技巧实例分析
2019/11/08 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
python如何将多个PDF进行合并
2019/08/13 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
python中time库的实例使用方法
2019/10/31 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
Java语言程序设计测试题选择题部分
2014/04/03 面试题
2014年学校党建工作汇报材料
2014/11/02 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
招商银行收入证明
2015/06/17 职场文书
英语教学课后反思
2016/02/15 职场文书
股权投资协议书
2016/03/23 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android
Python实现为PDF去除水印的示例代码
2022/04/03 Python
python数字图像处理:图像简单滤波
2022/06/28 Python