2011-07-30 79 views
16

我有一個表和一個thead和tbody部分。我已經成功應用了一個slideToggle,但動畫被破壞了。jQuery slideToggle使用thead和tbody元素的表格。沒有動畫。

當用戶點擊thead時,我想讓tbody的內容向上滑動。目前發生的情況是該部分簡單消失,沒有任何動畫。

下面是表

<table> 
    <thead> 
    <tr> 
     <td colspan="3">TABLE HEADING</td> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td class="first" colspan="1">Cell Contents</td> 
     <td colspan="1">Cell Contents</td> 
     <td colspan="1">Cell Contents</td> 
    </tr> 
    </tbody> 
</table> 

,這裏是jQuery的我使用:

<script type="text/javascript" language="javascript"> 
     $(document).ready(function() { 
     $("thead").click(function() { 
       $(this).next("tbody").slideToggle("slow"); 
      } 
     ) 
     }); 
    </script> 
+0

這些錯誤最有可能是因爲css中的高度設置。 – Pehmolelu

+0

因此,也許我應該通過jQuery設置一個高度,當點擊被觸發? – Rollcredit

回答

31

它消失了,因爲<tbody>通常不會比最高的td更短,無論您使用CSS設置其高度。

這就是自然高度爲tbody似乎消失的原因,而具有人造額外高度的那個似乎運行到tr達到其自然高度。

你可以用tbody {display:block;}來解決這個問題。 See the kludge at jsFiddle.

notice the effect that has when a table height is set.

也許,最好的辦法是來包裝整個表在一個div和slideToggle的是,像這樣:

<table class="AbbyNormal"> 
    <thead><tr><td colspan="3">TABLE HEADING</td></tr></thead> 
</table> 
<div class="tableWrap"> 
    <table class="AbbyNormal"> 
     <tbody> 
     <tr> 
      <td class="first" colspan="1">Cell Contents</td> 
      <td colspan="1">Cell Contents</td> 
      <td colspan="1">Cell Contents</td> 
     </tr> 
     </tbody> 
    </table> 
</div> 

只要確保和修復表格的寬度一樣。

See it in action at jsFiddle.

+1

謝謝!解決了這個問題。我最終將其封裝在一個div中,並在div上使用了slideToggle。 – Rollcredit

+1

這個解決方案如何只有這麼幾個upvotes ???非常感謝@Brock Adams!今天早上出現同樣的問題,你的解決方案是完美的。 – Tass

+0

@Tass,不客氣。很高興幫助。 –

0

我想你應該的高度設置爲TBODY,使其工作,看看這個小提琴:http://jsfiddle.net/nicolapeluchetti/AsDvb/

CSS:

tbody{ 

    height: 1000px; 
    background-color: yellow; 
} 
+1

我已經這樣做了,但現在看來發生的是動畫運行,直到tr處於最低高度,然後他們就消失了。 – Rollcredit