2014-12-10 38 views
1

我試圖顯示一個信息列表,它正常工作,但是當我隱藏包含列表的div,然後再次顯示它時,元素與「寬度:汽車」寬度造型正在重新尺寸和新尺寸太小:jQuery隱藏然後顯示寬度的寬度:auto元素比正常小

enter image description here

隱藏後:

隱藏之前210

enter image description here

我的PHP生成的元素看起來是這樣的:

<div displayitem='true'> 
    <table> 
     <?php 
      foreach($aExistingChangeDetailsData['customers'] as $aCustomer){ 
       ?><tr><td><li style='width:auto;'><?php echo $aCustomer['sCustomerName']; ?></li></td></tr><?php 
      } 
     ?> 
    </table> 
</div> 

和我的jQuery是簡單的:

function expandSection() { 
    $("div.cd-content").show("slow"); 
} 

function collapseSection() { 
    $("div.cd-content").hide("slow"); 
} 

我猜這個問題是由於重新上漿性質的幻燈片動畫,是否有任何簡單的方法來保持寬度的寬度:隱藏後的自動元素,以便他們恢復到適當的大小?

編輯: 看來每個元素的寬度減少了5。

+2

向我們展示HTML/CSS/JS的實時版本,也許是jsFiddle。如果沒有看到它的實際操作和代碼亂碼,很難猜測出問題。 PHP不應該與你的問題有任何關係。 – philtune 2014-12-10 21:47:36

+2

嘗試使用fadeIn和fadeOut分別代替顯示和隱藏,導致'hide()'將元素的寬度更改爲零,但是'fadeOut()'更改屬性'opacity'而不是'width' – Banzay 2014-12-10 22:00:20

+0

@philtune我嘗試過複製它在小提琴上,我不能重現該問題。 – TheBat 2014-12-10 22:06:13

回答

3

嘗試使用fadeIn分別fadeOut istead的showhide,導致hide()將元素的寬度更改爲零,但​​更改屬性opacity而不是width

+0

謝謝!很棒!我還爲淡入淡出添加了「快速」,以便更好地匹配隱藏/顯示動畫。 – TheBat 2014-12-10 22:11:12

+0

這很不錯:-) – Banzay 2014-12-10 22:18:36

1

你的網線寬度:汽車造型只被設置一次,在第一次呈現,您還可以設置它後事件觸發:

function expandSection() { 
    $("div.cd-content").show("slow").css("width", "auto"); 

} 

function collapseSection() { 
    $("div.cd-content").hide("slow"); 
} 
+0

非常好的主意,但它沒有奏效。我可能需要稍後再探索,以便我可以回退。 – TheBat 2014-12-10 22:10:46

+0

對不起,我錯誤地使用了jquery width(),更改了我的答案以使用.css – brobas 2014-12-10 23:26:26

相關問題