Jquery изменяет размер прослушивателя на div
Это ситуация, у меня есть 2 div рядом друг с другом. Один div очень динамичен по высоте, что в основном означает, что он может расти и сокращаться, чтобы разместить его. Например, у этого div есть содержимое, которое можно складывать открытым или закрытым, или контейнеры, которые могут расширяться, чтобы соответствовать загруженному содержимому ajax.
Теперь рядом с этим div будет еще один, который аккуратно следует за высотой первого с помощью css. Прекрасно работает. Но вот вопрос: я хотел бы изменить содержимое этого второго div в зависимости от его высоты.
Другими словами, div 1 изменяется в размере, div 2 следует через css, и теперь мне нужно вызвать вызов ajax для повторного заполнения div 2 новым контентом, подходящим для него новым размером.
Кто-нибудь знает, как я могу это сделать с помощью jquery? Если возможно, без использования тайм-аутов?
Приветствия.
Ответы
Ответ 1
Как предоставленный поток poelinca предлагает, для этой функции есть несколько плагинов.
Если вам не нравится идея плагина, другим простым решением было бы просто инициировать событие "изменить размер" в div при каждом изменении содержимого. Затем вы можете контролировать его с помощью resize(), как и ожидалось, используя элегантный шаблон наблюдателя.
function appendContent($div, content) {
$div.append(content).trigger($.Event('resize'));
}
$div.bind('resize', function(e) {
// all your magic resize mojo goes here
});
Ответ 2
https://github.com/sdecima/javascript-detect-element-resize
Работает как шарм!
Я проверил attrchange, но это не сработало, потеряно 2 часа работы: (
Ответ 3
Единственное, о чем я мог подумать, - это установить таймер на каждую высоту каждые X
секунды.
Что-то вроде этого:
function checkHeightTimer(){
var div1 = $('#div1');
var div2 = $('#div2');
var somesize = #somenumber here;
if(div1.height() > somesize){
//do something to div2
}
setTimeout(checkHeightTimer, 500); //at 500 miliseconds
}