2012-05-18 53 views
4

此代码如何决定向上切换还是向下切换?请帮忙。谢谢。如何知道slideToggle()是向上还是向下移动?

<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> 

回答

3

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

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

你也可以决定它的事实后把以及方向:

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

这是当然的,假设你没有任何定位的元素,它看起来尽管你不知道。

从jQuery的网站在这里
1

它检查将要被切换的所述内容是否是可见的或不

2

如果元素当前被设置为显示:无;或以其他方式隐藏。例如高度为0。然后它会滑落,否则它会滑动。

现在,该代码将滑落,因为您的CSS显示:none;在里面。

1

直接(http://api.jquery.com/slideToggle/)

如果最初显示的元素,它会被隐藏;如果隐藏,它会显示。显示属性将根据需要进行保存和恢复。如果一个元素的显示值为内联,然后被隐藏并显示,它将再次以内联方式显示。当隐藏动画后高度达到0时,显示样式属性设置为none,以确保该元素不再影响页面的布局。

希望这会有所帮助。

1

您可以使用jQuery的CSS功能为, 我在代码中的一些更多的变化在这里写的JavaScript代码,

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

请参阅完整的工作example

+0

根据您的需要你是否希望在操作之前移动我在slideToggle函数调用之前或之后添加的if块。 –

相关问题