Javascript 在使用jQuery展开DIV时将高度设置为自动

Javascript 在使用jQuery展开DIV时将高度设置为自动,javascript,jquery,html,Javascript,Jquery,Html,我试图在展开DIV时将其高度设置为auto,但每次只执行“”时,它会将其缩小,或者执行“auto”时,它什么也不做。如何将高度更改为自动?我的内容将是所有不同的高度,不想每次我设置一个高度参数时都要传入一个高度参数。这就是我的内容,不能正常工作。DIV将以静态高度开始,然后需要展开以显示DIV中的所有文本 我的朋友: 这是我的jQuery代码: function changeheight(_this) { var thisText = $(_this).text() ; if

我试图在展开DIV时将其高度设置为auto,但每次只执行“”时,它会将其缩小,或者执行“auto”时,它什么也不做。如何将高度更改为自动?我的内容将是所有不同的高度,不想每次我设置一个高度参数时都要传入一个高度参数。这就是我的内容,不能正常工作。DIV将以静态高度开始,然后需要展开以显示DIV中的所有文本

我的朋友:

这是我的jQuery代码:

function changeheight(_this) {
    var thisText = $(_this).text() ;
    if (thisText == 'more') {
        $('#overviewtext').animate({
            'height': ''
        }, 600);
        $(_this).text((thisText  == 'more') ? 'less' : 'more');
    }
    else if (thisText  == 'less') {

        $('#overviewtext').animate({
            'height': '150px'
        }, 600);

        $(_this).text((thisText  == 'more') ? 'less' : 'more');
    }

    return false;
};

您可以使用.css()更改元素的css,在这种情况下

$('#overviewtext').css('height', 'auto');

您可以尝试在动画调用后添加该行。

您不必更改高度。您应该只使用JQuery的slidedown和slideup

我对你的例子做了一些修改

编辑 我误解了问题是什么。您希望显示一些文本,然后单击“越来越多的文本显示”。然后单击“越来越少的文本显示”。我已经完成了这项工作,但有点麻烦。显然,JQuery在设置自动和百分比动画方面做得不好。基本上,我所做的就是当你点击更多。我存储了当前的高度。临时将其更改为自动,使其完全打开。有那么高。将其更改回closed(希望用户没有看到)。然后取那个高度并用它制作动画。我希望有一个更简单的方法,但现在我找不到

我的例子就在这里

我能想到的实现这一点的唯一其他方法是使用一个内部div,其中包含所有向下滑动和向上滑动的“更多”文本,但您必须能够区分更多文本的截止位置。

改进的代码:

function changeheight(_this) {
    $('#overviewtext').slideToggle(600); 
    $(_this).text($(_this).text() == 'more' ? 'less' : 'more');
    return false;
};

这里的演示

我遇到了一个类似的问题,我的解决方案是使用JqueryUI,当在实际文本中单击时,它会在切换上设置类的动画

jQuery ("#box_description_texts p").click(function() { 
    jQuery(this).toggleClass("box_text_expanded", 250);
});
在CSS中

#box_description_texts p.box_text_expanded {height: auto;}

可能重复:通常这些类型的“更多”函数需要交换(切换)两个div,一个较小的文本,另一个完整的文本。只是一个想法…@Nathan好吧,你提到的重复问题没有答案answer@LaurenceBurke事实上,第一个答案看起来是可行的…@内森,那么也许你应该测试一下,如果它真的有效,那么就参考答案而不是问题。非常反升旗。但这不会使它动起来,它只会升到那个高度。在我看来,OP希望它被动画化,但它并没有达到我所需要的效果。我需要它设置在一个静态的高度开始,然后展开,以暴露所有的文本。这正好相反,并将其简化为零。