Подтвердить что ты не робот

JQuery динамическое изменение размера div после вызова ajax

Я пытаюсь расширить div, чтобы он соответствовал тексту, не указывая точное значение hegiht. Я попытался использовать что-то вроде.

$('#div').addClass('myclass');

С myclass с высотой: auto; но это не сработает. Я не знаю, как получить его для расширения div соответственно от вызова ajax, который возвращает текст.

Это основной класс css

.pro_input{ 
    border-top:2px solid #919191;
    border-left:1px solid #CBCBCB;
    border-right:1px solid #CBCBCB;
    border-bottom:1px solid #CBCBCB;
    width:530px;
    background-color:#F2F2F2;
    height:72px;    
 }
 .pro_attach{
     height:auto;
  }

Я просто пытаюсь сделать высоту auto после ответа ajax. Текст может быть немного или много. Поэтому мне нужно, чтобы оно расширялось соответствующим образом. Я использую addclass, чтобы изменить его для других вещей, но использование его с jQuery addclass с pro_attach не работает.

Спасибо

4b9b3361

Ответ 1

Просто нужно сделать это:
Оберните лимит div вокруг div, который хотите загрузить текст с помощью ajax:

<div id="limit">
    <div id="div"> ajaxed load text </div>
</div>

Скрыть #limit div переполнение:

#limit { position: relative; overflow: hidden; }

И, наконец, установите высоту #limit на высоту #div, все время ПОСЛЕ загрузки текста с помощью ajax:

$("#limit").css({
    height: $("#div").height()
});

Это то же самое, просто анимированное:

$("#limit").animate({
    height: $("#div").height()
},600);

script проверяет высоту #div и присваивает ее #limit, трюк.

Ответ 2

Предположение:. Вначале в div не было контента. Позже текст добавляется в div.

Скажем, что id div - 'abc', а высота div, когда в нем нет содержимого, составляет 10px. то стиль, который я хотел бы дать, это:

#abc {
  min-height:10px;
  height:auto !important;
  height:10px;
}

Источник: http://www.dustindiaz.com/min-height-fast-hack/

Ответ 3

UPD: Я создал базовый пример, я уверен, что на этом этапе я все понял неправильно, поэтому, если вы можете изменить его и опубликовать ссылку здесь, Я был бы в состоянии быть более полезным =)

JS

var testData = "Test data, Test data, Test data, Test data, Test data, Test data, Test data, Test data, Test data";


$("#btn").click(function(){
  $("#sub").html(testData);
  $("#sub").css({height: 'auto'});
});**strong text**

HTML

<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  #main{
    border: 1px solid #f00;
    padding: 5px;
    width: 100px;
  }
  #sub{
    border: 1px solid #000;
    padding: 5px;
    height: 72px;
  }
</style>
</head>
<body>
  <div id="main">
    <div id="sub">
    </div>
  </div>
  <input type="button" id="btn" value="ajax event"/>
</body>
</html>

Ответ 4

Это решение похоже на один из ответов выше (sv_in)

У меня есть div с id abc и имеет css следующим образом:

#abc{
height:575px;
}

и я изменил его на следующее, и он сработает!

#abc {
min-height: 575px;
height: auto;
}