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解决常见浏览器兼容问题的12种方法
Jan 04 Javascript
Extjs 几个方法的讨论
Jan 28 Javascript
HTML,CSS,JavaScript速查表推荐
Dec 02 Javascript
jquery 构造函数在表单提交过程中修改数据
May 25 Javascript
JavaScript中的函数(二)
Dec 23 Javascript
JavaScript设计模式之单体模式全面解析
Sep 09 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
Three.js实现简单3D房间布局
Dec 30 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
Apr 26 Javascript
JS 创建对象的模式实例小结
Apr 28 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记录代码执行时间(实现代码)
2013/07/05 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
python实现删除文件与目录的方法
2014/11/10 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
Python 音频生成器的实现示例
2019/12/24 Python
Python列表list操作相关知识小结
2020/01/29 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
规划编制实施方案
2014/03/15 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
《长相思》听课反思
2014/04/10 职场文书
旷工检讨书1000字
2015/01/01 职场文书
接待员岗位职责
2015/02/13 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
城南旧事读书笔记
2015/06/29 职场文书
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL
MySQL创建管理RANGE分区
2022/04/13 MySQL