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保存当前路径(cookies记录)
Dec 14 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
Apr 19 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
Aug 26 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
Oct 29 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
Dec 19 Javascript
jQuery简单实现tab选项卡切换效果
Jun 20 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
Oct 15 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
Express + Session 实现登录验证功能
Sep 08 Javascript
浅析vue中的MVVM实现原理
Mar 04 Javascript
深入浅出vue图片路径的实现
Sep 04 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 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制作静态网站的模板框架
2006/10/09 PHP
php基础学习之变量的使用
2011/06/09 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
JS常用函数使用指南
2014/11/23 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
Python列表和元组的定义与使用操作示例
2017/07/26 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
python format 格式化输出方法
2018/07/16 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python短信轰炸的代码
2020/03/25 Python
python如何变换环境
2020/07/21 Python
python 实现逻辑回归
2020/12/30 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
研究生自荐信
2013/10/09 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
继续教育个人总结
2015/03/03 职场文书
初三语文教学反思
2016/03/03 职场文书
车位出租协议书范本
2016/03/19 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers