Так что я хорошо знаком с масонством, я бы сказал, но мне не приходилось это делать раньше.Каменная кладка: создание сетки на обратном вызове AJAX
Я знаю, что «добавленный» метод добавляет элементы в сетку после загрузки страницы через ajax, но это не совсем то, что я пытаюсь сделать.
Моя структура сетки не существует вообще, пока она не вызвана через ajax.
Например (псевдокод):
- Страница Нагрузки
- пользователь щелкает ссылку
- AJAX вызова, HTML возвращается строка и добавляется в DOM с помощью JQuery.
- Необходимо создать экземпляр сетки кладки на основе этого HTML.
В основном HTML, который возвращается через AJAX выглядит примерно так:
<div class="grid-57">
<a class="item" href="http://www.example.com">
<img src="http://fpoimg.com/350x350"/></a>
</a>
<a class="item" href="http://www.example.com">
<img src="http://fpoimg.com/350x250"/></a>
</a>
<a class="item" href="http://www.example.com">
<img src="http://fpoimg.com/350x450"/></a>
</a>
</div>
Так как вы можете видеть, я не добавлять к существующей сети или кирпичной кладке, мне нужно создать новый при успешном возврате AJAX.
My JS выглядит примерно так:
$('.get-grid').click(function(e){
var id = $(this).data('id');
$.post(ajaxurl, { action: 'get_grid', id: id }, function(response) {
// Append this html to the area of the site where I have the grids.
$('.all-the-grids').append(response);
// Here is where i need to actually turn this HTML that I just added into a masonry object and lay it out.
var $container = $('.grid-' + id);
msnry = new Masonry($container[0], {
columnWidth: 188,
itemSelector: '.item',
gutter: 10
});
msnry.on('layoutComplete', function(){
// never making it in here.
});
});
});
Любая идея, как это сделать?
EDIT
Оказывается, моя сетка не становится выложила правильно, без ошибок, но он никогда не достигает обратный вызов layoutComplete здесь.
вы говорите Masonary? –