2011-09-14 94 views
2

,当我在一个表中使用它我有jQuery的效果基本show和了slideDown一个小问题。我有这样的HTML(也主要由jQuery的产生,但是这并不重要):的jQuery了slideDown和效果基本show看起来不正确

<tr class="expandable-container"> 
    <td colspan="10"> 
    <div id="3_expandable" style="display: none;"> 
     <table class="innerTable"> 
     ... 
     </table> 
    </div> 
    </td> 
</tr> 

风格的外部表:

.main-table { 
    border-radius: 0.5em 0.5em 0 0; 
    width: 129em; 
    background-color: #f1f1f1;  
    margin-top: 1.5em; 
    z-index: 10; 
    position: relative; 
} 

.main-table td, .main-table th { 
    padding: 1.2em 0.7em; 
    border-collapse: collapse; 
    border-left: 0.1em solid #dedede; 
} 

.main-table td:first-child, .main-table th:first-child { 
    border-left: 0 solid; 
} 

.expandable-container td { 
    padding: 0 !important; 
    background-color: red; /* inserted to identify the problem */ 
} 

由于效果基本show和了slideDown不要在表格元素工作,我在div中包裹我的内容(这是另一个表,但它不重要),这当然是隐藏的。当我应用slideUp和slideDown方法并在Firefox 6上测试它时,出于某种原因,动画出现了skippy。因此,我设置了一个10秒长的滑动时间来检查它,并确定当动画开始时,td元素立即以height == 20px出现,并且div在其中滑动。然后一切都按预期进行 - 当div超过td的初始意外高度时,它会覆盖它并扩展到预期的大小。

这发生在Firefox 6,它的工作原理没有在Chrome 13的任何问题,我没有测试它在IE浏览器的任何版本,因为它不是预期的浏览器,所以我没有去通过所有的麻烦并将其安装在Linux机器上。没有在Opera上测试过,因为现在有一些其他的脚本崩溃了,它将被修复。

我附加了slideDown动画的第一时刻的截图 - 当TD出现无章可循(红色背景)。

slideDown - first phase

我的问题 - 是有办法或解决方法来解决它?

由于沙龙的建议,我增加一条,作为的jsfiddle。奇怪的是,它工作得很好,即使在FF6上: jsFiddle rendition

编辑:我修复了导致Opera 11崩溃的问题,所以我能够测试它。所以 - 它也发生在Opera 11上。

+0

添加http://jsfiddle.net/ - 让人们看起来更容易它在行动中。 – Ariel

+0

什么版本的jQuery? – Ariel

+0

好点,我会尽力找到一些时间,并做到这一点(现在很多工作)。 – Przemek

回答

2

基于小提琴和你的症状,我认为这与填充或边距(可能是边距)有关。即一旦元素可见,它就有一个不包含在高度动画中的余量。

但是,我真的不能回答是肯定的,因为我没有看到它发生。 (你应该试着找出小提琴与实际代码有什么不同 - 尝试注释css的部分。)

+0

这是一个小问题,当滑动时间很短时大部分是看不见的,所以我会在空闲时间看看它。感谢您的支持。 – Przemek

相关问题