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 相关文章推荐
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 Javascript
javascript实现控制div颜色
Jul 07 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
Apr 26 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
Dec 08 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
详解vue-cli + webpack 多页面实例应用
Apr 25 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
Aug 25 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 Javascript
vue使用swiper实现中间大两边小的轮播图效果
Nov 24 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
JS实现数据动态渲染的竖向步骤条
Jun 24 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
Windows下安装Memcached的步骤说明
2010/04/25 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
JS模拟多线程
2007/02/07 Javascript
学习js所必须要知道的一些
2007/03/07 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
python生成器generator用法实例分析
2015/06/04 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
python实现超级玛丽游戏
2020/03/18 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
教师自荐书
2013/10/08 职场文书
中学生学习生活的自我评价
2013/10/26 职场文书
保洁主管岗位职责
2013/11/20 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
MySQL数据库事务的四大特性
2022/04/20 MySQL