Помогите адаптировать скрипт к аякс-обновлению страницы
Есть скрипт коллажа, которые работает при обычной загрузке страницы
$(window).load(function () { collage(); }); function collage() { $('.Collage').collagePlus( { 'fadeSpeed' : 2000, 'targetHeight' : 300, 'allowPartialLastRow' : true, }); } var resizeTimer = null; $(window).bind('resize', function() { $('.Collage img').css("opacity", 0); if (resizeTimer) clearTimeout(resizeTimer); resizeTimer = setTimeout(collage, 200); }); но, этот скрипт перестает работать при аякс-перезагрузке данных на странице. автор расширения PHPBB3 сделал FAQ и описание, "Как подружить это расширение с другим?" http://www.phpbbguru.net/community/topic44157.html Т.е. надо встроить имеющийся скрипт в следующую обертку... Цитата:
$('#qr_posts').on('qr_loaded', function (e, elements) { collage(); }); дело не обошлось, надо как-то заворачивать тот код, что $(window).bind... самостоятельно справиться не могу, прошу помощи. |
alecto, загрузили данные запустили collage() и всё
|
$(window).load(function () { collage(); }); function collage() { $('.Collage').collagePlus( { 'fadeSpeed' : 2000, 'targetHeight' : 300, 'allowPartialLastRow' : true, }); } var resizeTimer = null; $(window).bind('resize', function() { $('.Collage img').css("opacity", 0); if (resizeTimer) clearTimeout(resizeTimer); resizeTimer = setTimeout(collage, 200); }); $('#qr_posts').on('qr_loaded', function (e, elements) { collage(); }); так не работает. или я не понимаю, что надо делать. |
alecto,
$.ajax({ url: '......', success: function(){ .... сюда collage(); } }); |
alecto,
после ajax пробовали изменить экран? работает collagePlus или нет? |
по привиденному мной коду: после аякса изображения не отображаются, реакции на изменение размера нет.
вот пример: заходите через вторую страницу, затем аяксом переходите на первую. http://motobratva.com/viewtopic.php?...=5142&start=10 коллаж в первом сообщении под картинкой. если нажать F5 на первой странице - коллаж будет виден. если же не добавлять код $('#qr_posts').on('qr_loaded', function (e, elements) { collage(); }); то при всех тех же действиях (с 2 страницы на 1) и изменении размера окна - картинки появляются. вмешаться в работу расширения не получится, т.е. адаптировать под аякс придется ту часть, которая доступна мне, т.е. скрипт включения колллажа. по вашему коду постом выше - простите великодушно, вообще ничего не понял. |
приведу для примеру:
был работающий код, который переставал работать при смене страниц аяксом $(document).ready(function() { var scr_w = $(this).width(); var scr_h = $(this).height(); if (scr_w > 800 && scr_h > 600) { $("dl.thumbnail a").addClass("highslide").attr("onclick", "return hs.expand(this)"); } }); после доработки согласно инструкции автора до такого вида - все работает. function HighSlideAttachments(e, elements) { var scr_w = $(this).width(); var scr_h = $(this).height(); if (scr_w > 800 && scr_h > 600) { $("dl.thumbnail a").addClass("highslide").attr("onclick", "return hs.expand(this)"); } } $(document).ready(function (e) { HighSlideAttachments(e, $(document)); }); $('#qr_posts').on('qr_loaded', HighSlideAttachments); приведенный выше код коллажа, поидее, можно исправить аналогичным образом, но он более сложен для меня и, вроде бы должен работать, но никак не хочет. |
на всякий случай попробовал вот такой вариант - тоже безрезультатно
function collage() { $('.Collage').collagePlus( { 'fadeSpeed' : 2000, 'targetHeight' : 300, 'allowPartialLastRow' : true, }); } var resizeTimer = null; $(window).bind('resize', function() { $('.Collage img').css("opacity", 0); if (resizeTimer) clearTimeout(resizeTimer); resizeTimer = setTimeout(collage, 200); }); function CollageOnAjaxPage(e, elements) { collage(); } $(document).ready(function (e) { CollageOnAjaxPage(e, $(document)); }); $('#qr_posts').on('qr_loaded', CollageOnAjaxPage); |
Цитата:
вариант на последок пальцем в небо $('#qr_posts').on('qr_loaded', $(window).resize); для меня слишком сложно что вы творите Цитата:
|
спасибо за попытку помочь.
|
Часовой пояс GMT +3, время: 01:35. |