jQuery 怎么实现点击页面其他地方隐藏菜单

 我来答
育知同创教育
2016-02-03 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部

jquery实现点击页面其他地方隐藏指定元素:
在很多效果中,都有这样的功能,当点击页面的其他地方时,能够隐藏一个指定的元素,例如在模拟实现的select下拉菜单效果中,当下拉菜单出现的时候,我们往往希望当点击页面其他地方的时候,能够隐藏下拉条,下面就通过一个实例单独介绍一下如何实现此功能。
代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>点击页面其他地方隐藏div-蚂蚁部落</title>
<style type="text/css">
*{
  margin:0px;
  padding:0px;
}
.main{
  cursor:pointer;
}
.list{
  border:1px solid black;
  display:none;
}
.list li{
  cursor:pointer;
  border:1px solid red;
  list-style:none;
}
#noPopEvent{
  width:100px; 
  height:100px; 
  background-color:blue;
  font-size:12px;
  margin:200px;
  text-align:center;
  line-height:100px;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){ 
  $(".main").click(function(e){ 
    $(".list").toggle(); 
    e.stopPropagation();
  })
   
  $(document).click(function(){ 
    $(".list").hide(); 
  }) 
   
  $(".list li").click(function(){ 
    $(".main").text($(this).text()); 
    $(".list").hide(); 
  }) 
  $("#noPopEvent").click(function(e){ 
    e.stopPropagation(); 
  }) 
}); 
</script>
</head>
<body>
<div style="width:200px;margin:20px;">
  <div class="main">蚂蚁部落</div>
  <div class="list">
    <ul>
      <li>div+css教程</li>
      <li>javascript教程</li>
    </ul>
  </div>
</div>
<div id="noPopEvent">点我不行</div>
</body>
</html>
丁巴什罗大神cy
2018-05-15 · TA获得超过1784个赞
知道小有建树答主
回答量:1525
采纳率:86%
帮助的人:630万
展开全部

如果页面里没有其它与document相关的操作,那么上面的代码没问题,也不会出现问题,但不是科学的方法,最科学的方法应该是这样:

$("#btn").click(function(e){     
    e.stopPropagation();//阻止冒泡 
    $("#btncon").toggle();  //切换子菜单的显示或隐藏状态  
    if($("#btncon").is(":visible")){    //判断子菜单是否可见   
        $(document).one("click",function(){     //如果可见就为documnet对象绑定个一次性的单击事件       
            $("#btncon").hide();       
        });
    }
});

要隐藏子菜单的时候,不能直接给documnet对象赋予click事件,因为这样在每次点击页面时,都会执行这个事件,所以科学的方法是用one来赋予一个一次性事件,就行了,这里有在线实例演示:网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式