div会向下滑动,但不会向上滑动。

5
我试图使用toggle、slideUp和slideDown来显示和隐藏一系列的div。我能够让div向下滑动,但是我无法让它向上滑动。我以前曾经使用过这个脚本而没有发生意外,所以我真的很困惑为什么它现在不能用了。我已经包含了我的脚本和我试图显示和隐藏的div。
快速提醒:当我在“hidden vehicles” div中放置一个普通的p标签时,它正常工作。它像应该的那样显示和隐藏。然而,当我把我的表格放回到那个div中时,它就不起作用了。
<script type="text/javascript">
$(document).ready(function() {
    $(".ShowVehicles").toggle(function() {
        $(".HiddenVehicles").slideDown(2000);
        $(this).text("Hide All");
    }, function () {
        $(".HiddenVehicles").slideUp(2000);
        $(this).text("Show All");                
    });
});

<div class="HiddenVehicles" style="display:none; width:730px;">
    (there will be a giant table in here)
    </div>

1
我刚在本地测试了你的代码,它运行良好。很可能是你的表格浮动了。你可以尝试在你的div和table中添加position:relative。有没有可能提供一个在线测试页面的链接?这样更容易调试。 - Doug Neiner
2
更正一下,那两个建议是无关的。如果您的表格未浮动,请尝试使用position:relative。如果它已经浮动,请在表格CSS上关闭它,即float:none - Doug Neiner
1
非常感谢!这个完美地解决了我的问题。我的表格很可能从某个地方继承了一个浮动类!再次感谢! - RachelGatlin
@dcneiner - 你可能需要继续并发布正式答案,这样你们两个都可以从中获得声望分数。 - Chris
为了进一步澄清其他人遇到的问题,这似乎是一个浏览器问题。您测试的浏览器是Internet Explorer 6还是7? - Joshua
感谢@Chris的建议,我确实这样做了。@RachelGatlin,我很高兴它对你有用!如果你想标记它为已解决,我把这个建议放到了答案里。 - Doug Neiner
2个回答

3

我曾在评论中提供了解决方案,这个方案已经帮助解决了这个问题,现在我再次在这里发布:

当slideUp/slideDown动画只能单向运行时,往往是定位错误导致的。要么你正在动画的元素需要设置为position:relative,要么元素的子元素有应用float,而且没有给父元素真正的高度。

我建议尝试将float:none添加到表格中。如果这样不起作用,请尝试将position:relative添加到div#HiddenVehicles中。


感谢你发现了这个问题,@Jason! - Doug Neiner

0
对于那些没有浮动/定位问题的人,我发现将jQuery 1.10升级到1.11可以解决这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接