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 相关文章推荐
使用JS操作页面表格,元素的一些技巧
Feb 02 Javascript
jQuery中after的两种用法实例
Jul 03 Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
ES6学习教程之对象的扩展详解
May 02 Javascript
javascript+html5+css3自定义提示窗口
Jun 21 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
Oct 17 Javascript
vue里面父组件修改子组件样式的方法
Feb 03 Javascript
Node.js控制台彩色输出的方法与原理实例详解
Dec 01 Javascript
关于angular浏览器兼容性问题的解决方案
Jul 26 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常用函数小技巧
2008/09/11 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
JavaScript多态与封装实例分析
2018/07/27 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
为什么要做架构设计
2015/07/08 面试题
绘画设计学生的个人自我评价
2013/09/20 职场文书
简历中的自我评价范文
2014/02/05 职场文书
电钳工人个人求职信
2014/05/10 职场文书
社区元宵节活动总结
2015/02/06 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
股权投资协议书
2016/03/23 职场文书
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL