2011-02-03 1 views
0

Я потратил почти 24 часа на эту проблему, поэтому я надеюсь, что могу положиться на кого-то, у которого есть лучший дескриптор javascript и jquery, чтобы помочь.Изменение размера Div/Class с новой добавленной высотой содержимого AJAX, когда высота страницы уже установлена ​​OnLoad

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

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

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

СПАСИБО !!!!

ответ

0

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

+0

Он находится в моем контроле, вы можете разработать дальше ... Я своего рода новичок в целом JavaScript/JQuery мира :) – Pete

1

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

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

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

+0

Эй Эдриан, вот некоторый код: $ .ajax ({ \t \t типа : "POST", \t \t URL: "ajax.php", \t \t данные: \t "ID =" + + идентификатор "и информация =" + информация, \t \t успех: функция (HTML) { \t \t \t $ ("# новый) .append (HTML). \t \t} \t}); Я использую jquery и имел код для измерения высоты в функции успеха, но, похоже, не фиксирует высоту новой информации, просто информацию в тот момент, когда я нажимаю кнопку. Я предполагаю место, где у вас есть // СЧИТАЙТЕ РАСЧЕТ ЗДЕСЬ, как функция успеха - и в этом случае любая идея, почему она не работает? – Pete

+0

Вы также можете попробовать создать пользовательскую функцию JQuery для вычисления высоты: \t \t \t \t jQuery.fn.calculateHeight = функция() { \t \t \t \t \t // Вычисление высоты здесь \t \t \t \t \t возвращение этого; // Возвращает jQuery для включения цепочки \t \t \t \t}; \t \t \t \t $ ("# new"). Append (html) .calculateHeight(); Это гарантирует, что вычисления будут выполнены после добавления html. –

+0

Адриан - хороший материал. Я сделаю это и дам вам знать, что произойдет. Def оценивают понимание/помощь! Благодарю. – Pete

0

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

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

Эта функция обратного вызова - это то, где вы должны поместить свой код изменения размера.

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

+0

Эй, Нейл, Спасибо за ответ. Вот то, что мой код выглядит следующим образом: $ .ajax ({ \t \t типа: "POST", \t \t URL: "ajax.php", \t \t данные: \t "ID =" + + идентификатор «и информация = "+ info, \t \t успех: function (html) { \t \t $ (" # new) .append (html). \t \t} \t}); Я попытался поместить функцию высоты jquery для захвата новой высоты в обратном вызове (в функции успеха), но, похоже, она только фиксирует высоту в тот момент и перед добавлением новых данных ... поскольку это похоже на есть небольшая задержка до добавления новой информации. Я просто делаю что-то неправильно, и он должен работать? – Pete

 Смежные вопросы

  • Нет связанных вопросов^_^