Javascript $(';html';)。在另一个单击事件之后单击事件

Javascript $(';html';)。在另一个单击事件之后单击事件,javascript,jquery,html,Javascript,Jquery,Html,意图: 单击(#clickme)一个DIV向下滑动并进入视图(var isclicked=true) 当(var isclicked=true)和单击(#clickme)时,DIV向上滑动并(var isclicked=false) 当(var isclicked=true)和DIV处于视图中时,单击$('html')将DIV向上滑动(var isclicked=false) 问题: 当DIV处于slideDown位置时,(var isclicked=true),单击$('html')会继续触发

意图:

  • 单击(#clickme)一个DIV向下滑动并进入视图(var isclicked=true)
  • 当(var isclicked=true)和单击(#clickme)时,DIV向上滑动并(var isclicked=false)
  • 当(var isclicked=true)和DIV处于视图中时,单击$('html')将DIV向上滑动(var isclicked=false)
  • 问题: 当DIV处于slideDown位置时,(var isclicked=true),单击$('html')会继续触发。我遗漏了什么,以至于单击o f$('html')时只在DIV为(var isclicked=true)时触发

    jsIDLE:

    记住先停止(并完成)上一个动画:

    if(isclicked == false){    
        $('#myslider').stop(true, true).slideDown('slow');
          isclicked = true;       
    }else{
        $('#myslider').stop(true, true).slideUp('slow');
          isclicked = false;   
    }
    

    演示:

    放弃全局
    选项,只需使用
    滑块切换即可:

    $("#clickme").click(function(e) {
        e.stopPropagation();
        $("#myslider").slideToggle("slow");
    });
    
    $("body").click(function() {
        $("#myslider").is(":visible") ? $("#myslider").slideUp("slow") : 0
    });
    
    演示:

    使用
    $('body')
    而不是
    $('html')


    你所说的“只有在DIV为(var isclicked=true)时才触发”是什么意思?请看我的答案,你想要这个吗?这很有效。e、 停止传播();美元(“#myslider”).is(“:visible”)起到了作用。非常感谢。
    $("#clickme").click(function(e) {
        e.stopPropagation();
        $("#myslider").slideToggle("slow");
    });
    
    $("body").click(function() {
        $("#myslider").is(":visible") ? $("#myslider").slideUp("slow") : 0
    });