Активация кладки после jQuery .load () - PullRequest
0 голосов
/ 03 апреля 2011

Как активировать JS и другие функции jquery, такие как кладка после загрузки страницы.

я использую:

jQuery("#filterbox").load("mypage.html"}); works fine, but eg. mansory is not activated.
jQuery('#content #boxes').masonry({ columnWidth: 122, animate: true });

но второй не "активирован".

правильно ли, что css и js не активируются во время .load, и если, как я могу активировать его позже.

Спасибо за любую помощь ..

/ * С уважением 1012 *

Ответы [ 4 ]

3 голосов
/ 03 апреля 2011

Поскольку jQuery.load является асинхронным, jQuery('#content #boxes').masonry будет работать ПРЯМО после вызова jQuery.load.Вам нужен способ сообщить jQuery, что вы хотите выполнить эту функцию после фактической загрузки содержимого.

jQuery.load принимает функцию обратного вызова в качестве второго аргумента.Этот обратный вызов будет выполнен после загрузки вашего контента.Попробуйте это:

jQuery("#filterbox").load("mypage.html", function() {
    jQuery('#content #boxes').masonry({ columnWidth: 122, animate: true });
});

Продолжайте читать документацию для .load () .

3 голосов
/ 03 апреля 2011

Попробуйте это:

jQuery("#filterbox").load("mypage.html", function(){
   $('#content #boxes').masonry({ columnWidth: 122, animate: true });
});

Кстати, у вас есть дополнительные } после mypage.html.

0 голосов
/ 19 июня 2013

Добавить скрипт ImagesLoaded https://github.com/desandro/imagesloaded/blob/master/imagesloaded.js

Попробуйте:

jQuery("#filterbox").load("mypage.html",function() {
    jQuery('#content').imagesLoaded(function() {
        jQuery(this).masonry({ itemSelector: '.box' });
    });
});

Это работает для меня, надеюсь, это вам тоже поможет

мой пример (выберите галерею в навигации): http://test.crystalstudio.me/nms/

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

Попробуйте это

jQuery("#filterbox").load("mypage.html",function() {
      jQuery('#content #boxes').masonry({ columnWidth: 122, animate: true });
    });
...