如何知道slideToggle()是向上还是向下移动?

时间:2012-05-18 15:01:20

标签: jquery jquery-ui

此代码如何确定向上切换或向下切换?请帮忙。感谢。

<html>
    <head>    
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript"> 
            $(document).ready(function(){
                $(".flip").click(function(){
                    $(".panel").slideToggle();
                });
            });
        </script>

        <style type="text/css"> 
            div.panel,p.flip {
                margin:0px;
                padding:5px;
                text-align:center;
                background:#e5eecc;
                border:solid 1px #c3c3c3;
            }
            div.panel {
                height:120px;
                display:none;
            }
        </style>
    </head>

    <body>
        <div class="panel">
            <p>Crap.</p>
        </div>
        <p class="flip">Show/Hide Panel</p>
    </body>
</html>

5 个答案:

答案 0 :(得分:3)

您可以检查元素是否可见。如果可见,slideToggle()会向上移动。如果它不可见,它将向下移动。

// Want to know if it's visible?
$(this).is(":visible");

你也可以确定之后的方向:

$(".panel").slideToggle("slow", function(){
  alert( "I moved " + $(this).is(":visible") ? "Down" : "Up" );
})

当然,这是假设你没有任何定位元素,它看起来好像你没有。

答案 1 :(得分:2)

如果元素当前设置为display:none;或以其他方式隐藏。例如,高度为0。然后它会向下滑动,否则它会向上滑动。

现在,当您的CSS显示时,该代码将向下滑动:none;在它。

答案 2 :(得分:1)

它会检查要切换的内容是否可见

答案 3 :(得分:1)

直接来自jQuery网站(http://api.jquery.com/slideToggle/)

如果元素最初显示,它将被隐藏;如果隐藏,它将被显示。将根据需要保存和还原display属性。如果元素的显示值为内联,则隐藏并显示,它将再次以内联方式显示。隐藏动画后高度达到0时,显示样式属性设置为无,以确保该元素不再影响页面布局。

希望这有帮助。

答案 4 :(得分:1)

你可以使用jquery css函数, 我在这里编写javaScript代码,代码中有一些更改,

$(document).ready(function(){
    $(".flip").click(function(){
       if($(".panel").css("display") == 'block') {
          alert('Visible');
       } else {
          alert('Not visible');
       }
    $(".panel").slideToggle();
  });
});​

请参阅完整的工作example