embedly jQuery deferred.done() нужна помощь для запуска функции после завершения

Я ломал голову и пробовал разные способы заставить изотоп работать после того, как embed.ly возвращает мои данные.

$(function () {

    $.embedly.defaults.key = '0addb97cbe9c4522b1f52c128a15d48a';
    $('a.oembedj').embedly({
        display: function (data) {

            //   $(this).html(data.thumbnail_url);
            //$(this).html(function() {
            //var emph = data.thumbnail_url;
            // return '<img src=" ' + emph + '" />';
            //});
            $(this).html(function () {

                var emph = data.description;
                return '<p>" ' + emph + '"</p>';
            });
        }
    })

    $(function () {

        var $container = $('#container').isotope({
            itemSelector: '.news-item',
            columnWidth: 70
        });

        //  $('.news-item').click(function () {
        //    $(this).remove();
        //      $container.isotope();
        //    });

    })
});

Я не могу заставить его работать. Вот мой пример jsfiddle. Дайте мне знать, что вы думаете-

http://jsfiddle.net/daveferrara1/7XusF/28/

1 ответ

Решение

Часть моей трудности заключается в том, что я не знаю встраиваемых или изотопных, поэтому я не знаю, что такое успех. Тем не менее, поскольку ни у кого больше нет лучшей идеи, я сделал это: http://jsfiddle.net/7XusF/35/

Я понял, что показ вызывается для каждого изображения, и вы, вероятно, хотите, чтобы изотоп вызывался только один раз. Таким образом, у меня есть display build element (я сделал это немного более идиотским способом), и я установил триггер загрузки на img.

Каждый раз, когда создается img, ожидание увеличивается. Каждый раз, когда загрузка завершается, она уменьшается. Я предполагаю, что запросы на загрузку будут приходить быстрее, чем завершение загрузки, поэтому вы не будете сбрасываться до нуля несколько раз. Скрипка ведет себя как ожидалось в этом отношении. Является ли поведение, что вы хотите?

display: function (data) {
    var emph = data.thumbnail_url;
    waitingFor += 1;
    $('<img>').attr('src', emph).on('load', function () {
        waitingFor -= 1;
        if (waitingFor === 0) {
            var $container = $('#container').isotope({
                itemSelector: '.news-item',
                columnWidth: 70
            });
            console.debug('Isotoping.');
        }
    }).appendTo($(this));
}
Другие вопросы по тегам