代码之家  ›  专栏  ›  技术社区  ›  Eugene Balashov

当你点击一个滑动div的外部时,如何使它成为一个关闭的div?

  •  0
  • Eugene Balashov  · 技术社区  · 11 年前

    请帮帮我!我创建了一个简单的滑块,当你点击页面上的任何地方时,我都会尝试将其关闭,除了滑动“黑色”内容。

    参见JSFiddle: jsfiddle.net/2DaR6/233/

    Java脚本

    $(".black ").hide();
    $(".white").show();
    $('.white').click(function(){
        $(".black ").slideToggle(150);
    });
    

    HTML格式

    <div class="black">
        content
    </div>
    
    <a href="#" class="white">click me!</a><br />
    
    3 回复  |  直到 11 年前
        1
  •  2
  •   Barbara Laird    11 年前

    也许是这样的 http://jsfiddle.net/HE2Qg/

    $(".black ").hide().click(function(){
        return false;
    });
    $(".white").show().click(function(){
        $(".black ").slideToggle(150);
        return false;
    });
    $(document).click(function(){
        $(".black ").slideUp(150);
    });
    
        2
  •  0
  •   AlexCheuk    11 年前

    试试这个。

    http://jsfiddle.net/7QNnJ/1/

    $(".black ").hide();
    $(".white").show();
    $('.white').click(function(e){
        $(".black ").slideToggle(150);
        e.stopPropagation();
    });
    
    $(document).on('click', function(e){
        if( !$('.black').is(":hover")){
            $('.black').slideUp();
        }
    });
    
        3
  •  0
  •   Tom Smilack    11 年前

    您需要更改单击功能:

    $('.white').click(function(event) {
      $(".black ").slideToggle(150);
      event.stopPropagation();
    });
    

    并添加这两个功能:

    $(".black").click(function(event) {
      event.stopPropagation();
    });
    
    $("html").click(function() {
      $(".black").slideToggle(150);
    });
    

    这样,如果您单击页面上的任何位置 html 的单击处理程序将尝试关闭 div 。但是,如果您正在单击 分区 或“点击我”链接, event.stopPropagation() 将阻止事件到达 html格式 的单击处理程序。

    Here is a demo