首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数在隐藏时触发两次

函数在隐藏时触发两次
EN

Stack Overflow用户
提问于 2013-01-02 05:29:39
回答 1查看 255关注 0票数 0

我有一个隐藏的div,在单击链接时,它会显示该div。

代码语言:javascript
复制
  <div id="baystar">
        <!-- My hidden stuff -->
  </div>

  <div class="galactica">
    <li class="menu-563"><a class="menu-563 active" href="#">Tools</a></li>
  </div>

单击Tools链接时,将显示div.baystar。当您在打开时单击div.baystar内部时,它不会关闭。当您单击div.baystar之外的任意位置时,div.baystar将关闭。一切都运行良好。问题是,当我单击Tools链接关闭div.baystar时,它会快速关闭,然后重新打开,因此它会触发两次。

代码语言:javascript
复制
  $(".menu-563").click(function(){
    $("#baystar").slideToggle("fast");
    $(this).toggleClass("active"); return false;
  });

 $('a.menu-563').attr('href', '#'); {
 }

 var mouse_is_inside = false;

$(document).ready(function()
{
    $('#baystar').hover(function(){ 
        mouse_is_inside=true; 
    }, function(){ 
        mouse_is_inside=false; 
    });

    $("body").mouseup(function(){ 
        if(! mouse_is_inside) $('#baystar').hide();
    });
});

如果我去掉鼠标悬停功能,它工作得很好。我是否需要某种延迟,或者我的代码只需要重写?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-02 05:52:29

发生这种情况是因为您只停止了单击事件的冒泡。

您还需要停止mouseup,使其无法到达body

代码语言:javascript
复制
  $(".menu-563").click(function(){
    $("#baystar").slideToggle("fast");
    $(this).toggleClass("active"); return false;
  }).mouseup(function(e){return false;});

你可以这样做来处理整个事情..

代码语言:javascript
复制
$(".menu-563").click(function(e) {
    $("#baystar").slideToggle("fast");
    $(this).toggleClass("active");
    return false;
});

$('body').click(function(e){
    if (!$(e.target).closest('#baystar').length){
       $("#baystar").hide();
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14114393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档