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 21 Javascript
Ruffy javascript 学习笔记
Nov 30 Javascript
添加JavaScript重载函数的辅助方法2
Jul 04 Javascript
一个简单的js动画效果代码
Jul 20 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
Nov 17 Javascript
jquery xMarquee实现文字水平无缝滚动效果
Apr 29 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
May 15 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
vue项目刷新当前页面的三种方法
Dec 04 Javascript
微信小程序自定义头部导航栏(组件化)
Nov 15 Javascript
VUE实现吸底按钮
Mar 04 Vue.js
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导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
WebPack基础知识详解
2017/01/16 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python中的zipfile模块使用详解
2015/06/25 Python
python监控进程脚本
2018/04/12 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python识别验证码图片实例详解
2020/02/17 Python
Django使用rest_framework写出API
2020/05/21 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
护理职业应聘自荐书
2013/09/29 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
答辩状格式范本
2015/05/22 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书