|
jquery resize для div (а не только для window)
HELP ME!!!
Есть в JQUERY такая функция - resize: пример её использования: $(window).resize(function(){ alert('Размеры окна браузера изменены.'); }); - т.е если колёсиком изменить размер окна, то выведется сообщение. Как сделать, чтобы тот же эффект получался при изменении размера любого блока, например так: :( $('#blockdiv').resize(function(){ alert('Размеры окна браузера изменены.'); Похоже что resize применим только к элементу window, но наверняка есть способ для применения к другим элементам. Только как? Подскажите, очень горит! |
Погуглить слабо?
http://kurilka.co.ua/archives/jquery-resize-textarea/ |
Serg_pnz, глаза разуй.
Vitaliy88, к сожалению нет такого. И вроде бы и не планируется. Как вариант решения - MutationObserver + MutationEvent (устарел) - с их помощью можно отследить изменение атрибута style. Подходит естественно только когда размеры элемента меняются путем установки style.width и style.height ... |
Йопт...:blink:
|
Vitaliy88, А кто меняет размер блока и почему?
(Возможно проще решать задачу с иного конца ?) Ну или: Таймер <div id="Test" style="position:relative;border:red solid 1px;width:200px;height:100px;"></div> <script type="text/javascript"> var width="200px"; var height="100px"; setInterval (function (){ var w=document.getElementById("Test").style.width; var h=document.getElementById("Test").style.height; if(h!=height||width!=w){alert('Размеры div #Test изменены.'); width=w; height=h; } },200); setTimeout(function(){ document.getElementById("Test").style.width='100px'; },3000) </script> Можно еще засунуть пустой фрейм с position:absolute <div id="Test" style="position:relative;border:red solid 1px;width:200px;height:100px;"> <iframe id="frame0" name="frame0" width=100% height=100% style="position:absolute;z-index:-1"></iframe> Тут контент </div> <script type="text/javascript"> frame0.onresize = function(){ alert('Размеры div #Test изменены.'); }; setTimeout(function(){ document.getElementById("Test").style.width='100px'; },3000) </script> И отслеживать событие window.onresize внутри фрейма |
Deff, спасибо за идею с iframe - это гениально )
Цитата:
Более того, у элемента может быть указано css-свойство resize: both и тогда изменение размеров может инициировать юзер, а не скрипт. В DOM3 Events спецификации сказано, что браузер может слать это событие не только для defaultView. Вообще, тут налицо пробелы в спецификации, и помоему это никого не волнует. Serg_pnz, какие же мы нежные и ранимые :haha: .. |
Vitaliy88, у Бена Алмана есть решение этого вопроса - посмотрите тут:
http://benalman.com/code/projects/jq...amples/resize/ |
smat, ты опоздал. Deff уже предлагал таймер. Таймер - это самый кривой костыль который можно использовать.
|
Цитата:
Deff пытался решить проблему с другого бока, но это может не подойти в других случаях. А вот решение от Бена Алмана как раз и отвечает на поставленный вопрос. |
К слову в WebKit есть один неприятный глюк. Выражается он в том что при изменении элемента с resize:both юзером (растягивая ресайзер) MutationObserver не реагирует на изменение свойства style (хотя оно изменяется). В других браузерах с этим проблем нет.
|
Часовой пояс GMT +3, время: 22:05. |
|