jquery 动画到自动高度不起作用

标签 jquery height

更新 fiddle :http://jsfiddle.net/zQLQV/

我正在编写此脚本来制作内容旋转器。首先,我让所有幻灯片都获取默认高度,然后将它们设置为 0 高度。触发单击时(使用带有幻灯片 ID 的 href),所有打开的幻灯片将转到高度 0,并且触发的幻灯片将以动画显示到自动高度。

一切都按计划进行,除了自动高度。所有幻灯片都保持 0 高度,无论其中的内容有多少。唯一可见的是最小高度 850。

如有任何帮助,我们将不胜感激。

$(function() { 

    $(".slide").each(function() {
        slideHeight = $(this).height();
    });

    $(".slide").css({ "height": "0", "opacity": "0"});


    $(".side-nav ul li a").click(function(event) {
        event.preventDefault();
        currentHref = $(this).attr('href');
        $(".slide").stop().animate({"opacity": "0", "height": "0px", "min-height": "0px"}, 100);
        $(currentHref).stop().animate({"opacity":"1", "min-height": "850px", height: slideHeight + "px"}, 450);

    });                     

});

最佳答案

我相信您的问题在这里:

$(".slide").each(function() {
    slideHeight = $(this).height();
});

发生的情况是您的 slideHeight 变量仅设置为最后一张幻灯片的高度。如果您将最短的幻灯片移至列表中的最后一个位置,您会看到其他幻灯片内容被砍掉。

我已经updated your fiddle将每张幻灯片的高度存储在幻灯片本身的数据属性中。

HTML:

<div class="side-nav">
  <ul>
    <li><a href="#one-slide">1</a></li>
    <li><a href="#two-slide">2</a></li>
    <li><a href="#three-slide">3</a></li>
  </ul>
</div>

<div class="slide" id="one-slide">asdf<br>asdf<br>asdf<br>asdf<br></div>
<div class="slide" id="two-slide">asdf<br>asdf<br>asdf<br></div>
<div class="slide" id="three-slide">asdf<br>asdfasdf<br>asdfasdf<br>asdfasdf<br>asdfasdf<br>asdfasdf<br>asdfasdf<br>asdfasdf<br>asdf<br></div>

Javascript:

$(function() { 

$(".slide").each(function() {
    $(this).data('slideHeight', $(this).height());
});

$(".slide").css({ "height": "0", "opacity": "0"});


$(".side-nav ul li a").click(function(event) {
    event.preventDefault();
    var targetContainer = $($(this).attr('href'));
    currentHref = $(this).attr('href');
    $(".slide").stop().animate({"opacity": "0", "height": "0px"}, 100);
    targetContainer.stop().animate({"opacity":"1", height: targetContainer.data('slideHeight') + "px"}, 450);
});                        

});​

关于jquery 动画到自动高度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606791/

相关文章:

javascript - 如何使用 jquery 选择的插件在悬停/鼠标悬停事件上获取选择的选项值?

css - 最小高度导致 Facebook 评论插件出现空白

css - 如何连续查看网页当前窗口高度?

css - 无法控制iframe高度

html - IE 中的 CSS 100% 高度

CSS:根据最小图像将一行中的响应图像切割为相同高度

javascript - 获取TinyMCE中光标位置或光标所在行数

jquery - 更改文本 jquery 的颜色(一次只有一个 div)

javascript - 管理可排序的 div jquery

javascript - 无法在特定元素上使用鼠标悬停