包含div不能正确调整大小

时间:2012-12-20 09:54:51

标签: javascript css twitter-bootstrap

this page上,3条评论显示在Bootstrap轮播中。在对评论进行分页时,具有灰色背景的<div>应调整大小以适应评论的长度。在您回顾评论列表的末尾之前,这种方法运作良好。

例如,如果您使用下一个按钮前往评论,那么当您从上次评论(#3)到第一次评论时,第一次评论会留下一个很大的空白区域。同样,如果您使用prev按钮向后浏览评论,那么当您从第一次评论转到最后一次评论时(#3),评论文本会溢出包含div(请参阅下面的屏幕截图)。

总之,每当你回顾评论列表时,无论是使用prev按钮从#1到#3还是从#3到#1的下一个按钮,都不能正确调整包含div的大小。

当用户通过此轮播分页时调用的事件处理程序位于页面底部(为方便起见,此处转载):

$(document).ready(function () {

    $('#reviewsCarousel').carousel({
        interval:null
    });

    // reviewsCarousel height animation and review counter (set .reviewCount to 
    // the amount of .item in #reviewsCarousel, on .nextReview or .prevReview button 
    // clicks: set the carousel-inner class to the animate to the height of the next 
    // item or the first item if there is no next item, on carousel slide, set the 
    // reviewIndex class text to the index position of the .active .item)
    $("#reviewsCarousel .reviewCount").html($('#reviewsCarousel .item').length);
    $("#reviewsCarousel .btn.nextReview").click(function () {
        var reviewHeight = $("#reviewsCarousel .item.active").next(".item").height();
        if (reviewHeight === undefined) {
            var reviewHeight = $("#reviewsCarousel .item").first(".item").height();
        }
        $("#reviewsCarousel .carousel-inner").animate({"height":reviewHeight + "px"}, 400);
        $('#reviewsCarousel').bind('slid', function () {
            $("#reviewsCarousel .reviewIndex").html($("#reviewsCarousel .active").index("#reviewsCarousel .item") + 1);
        });
    });
    $("#reviewsCarousel .btn.prevReview").click(function () {
        var reviewHeight = $("#reviewsCarousel .item.active").prev(".item").height();
        if (reviewHeight === undefined) {
            var reviewHeight = $("#reviewsCarousel .item").last(".item").height();
        }
        $("#reviewsCarousel .carousel-inner").animate({"height":reviewHeight + "px"}, 400);
        $('#reviewsCarousel').bind('slid', function () {
            $("#reviewsCarousel .reviewIndex").html($("#reviewsCarousel .active").index("#reviewsCarousel .item") + 1);
        });
    });

});

以下是一些显示问题的屏幕截图:

enter image description here enter image description here

3 个答案:

答案 0 :(得分:1)

我在控制台中尝试了一些东西:

$("#reviewsCarousel .item.active").next(".item").height();

发现它是null

if (reviewHeight === undefined) // It's never this.

你永远不会进入ifundefined !== null: - )

只需使用:

if (!reviewHeight)

任何虚假价值都足够好。

答案 1 :(得分:1)

reviewHeight永远不会是undefined

使用if (!reviewHeight)而不是

答案 2 :(得分:1)

也许最好不要对此if语句使用严格比较。尝试改为

if (reviewHeight == undefined)

如果reviewHeight === null,还会输入if语句。