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. Дайте мне знать, что вы думаете-
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));
}