附加Packery.js的问题

时间:2015-02-15 22:57:26

标签: javascript packery

我正在尝试将现有的网页内容附加到'点击'到了网格的尽头,但没有运气。 Codepen上的文档中的示例创建了一个div,而我正在尝试使用packery.('getItemElements')从现有网格项中提取数据,并且当我追加到网格时它返回一个HTML元素数组原来的物品移动了,原来的物品消失了,但是在Packery已经放置了元素之后就没有了,留下了一点白洞。

这是我到目前为止所做的:

grid = $('.grid');
grid.packery({
    gutter: 10,
    itemSelector: '.grid-item',
    isHorizontal: true
});

$('.grid-wrapper .navigation .next').on('click', function() {

    var newGridContent = [];
    var currentContent = $('.grid').packery('getItemElements');

    for (var i = 0; i < currentContent.length; i++) {
        var newGridItem = currentContent[i];
        newGridContent.push(newGridItem);
    };
    grid.append(newGridContent);
    grid.packery('appended', newGridContent);

});

你可以在这里看到这个,在顶部的主网格转盘上:

http://johnpett.com/youraudience/

2 个答案:

答案 0 :(得分:1)

如果有人绊倒了,这是我的解决方案:

var currentContent;

$('.grid-wrapper .navigation .next').on('click', function() {

    currentContent = $('.grid').packery('getItemElements');

    var elems = [];

    for (var i = 0; i < 10; i++) {
        var elem = getItemElement(i);
        elems.push(elem);
    };

    $('.grid').append(elems);

    $('.grid').packery('appended', elems);

    $('.grid').animate({
        "left": "-=500px"
    });

});

function getItemElement(i) {
    var elem = document.createElement('div');
    var itemImage = currentContent[i].style.backgroundImage;
    var itemOuterHTML = currentContent[i].outerHTML;
    elem.style.backgroundImage = itemImage;
    elem.innerHTML = itemOuterHTML;
    return elem;
}

答案 1 :(得分:0)

我在这里预感但如果这不起作用会更新更新...

var p_grid = grid.packery({
    gutter: 10,
    itemSelector: '.grid-item',
    isHorizontal: true
});

$('.grid-wrapper .navigation .next').on('click', function () {

    var newGridContent = [];
    var currentContent = $('.grid').packery('getItemElements');

    for (var i = 0; i < currentContent.length; i++) {
        var newGridItem = currentContent[i];
        newGridContent.push(newGridItem);
    };
    p_grid.append(newGridContent).packery('appended', newGridContent);

});