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