Изменение размера Div / класса с помощью новой высоты добавляемого содержимого AJAX, когда высота страницы уже установлена ​​OnLoad - PullRequest
0 голосов
/ 03 февраля 2011

Я потратил почти 24 часа на эту проблему, поэтому надеюсь, что смогу рассчитывать на кого-то, кто лучше справится с javascript и jquery.

Ситуация такая. У меня есть настройка типа слайд-шоу (Coda Slider 2 от Niall Doherty), которая по существу автоматически регулирует высоту каждой панели / страницы в зависимости от содержимого, которое находится на странице. Это прекрасно работает, за исключением случаев, когда мне приходят динамические данные, в этом конкретном случае я добавляю div через jquery POST Ajax, чтобы комментарии могли появляться без необходимости перезагрузки. Проблема, с которой я сталкиваюсь, заключается в том, что, поскольку высота уже предварительно настроена на загрузку, новый контент не появляется, а скорее отображается ниже видимого контента (переполнение скрыто), поэтому мне нужно изменить размер основного div / класса учесть новую информацию - и все при нажатии на кнопку «новый комментарий».

Я думаю, что нашел решение, в котором я использую функцию высоты jquery, чтобы измерить высоту контейнера div, который я использую для слайда, а затем соответствующим образом отрегулировать высоту этого div, но я считаю, что js выполняется как кнопка нажата, и, таким образом, когда новый комментарий наконец добавляется с помощью вызова ajax, он использует старую высоту, а не новую высоту.

Буду признателен за любую помощь в получении моего грубого хака или если у вас есть лучшие идеи о том, как справиться с этим более изящно.

СПАСИБО !!!!

Ответы [ 3 ]

1 голос
/ 03 февраля 2011

Я стреляю вслепую без некоторого кода, но я предполагаю, что вы захотите выполнить решение, которое вы придумали после вызова ajax.Итак,

$.post("action", {
    data
}, function () {
    // DO THE CALCULATION HERE
});

Это будет выполняться после завершения вызова AJAX.

0 голосов
/ 03 февраля 2011

Не видя релевантных фрагментов вашего JavaScript, сложно понять, на что вы нацелены.Однако вы можете выполнить функцию после успешного завершения вызова AJAX, используя параметр «success:» при вызове функции $.ajax().Например,

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});

Эта функция обратного вызова предназначена для хранения кода изменения размера.

Извините, только что заметил, что вы используете $.post().Это также имеет функцию обратного вызова, где вы должны поместить свой код изменения размера.

0 голосов
/ 03 февраля 2011

Один простой способ сделать это - вызвать функцию регулировки высоты из тега скрипта внутри загруженного html. Если контент, загруженный через ajax, также находится под вашим контролем, то есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...