当我将AJAX返回的数据附加到我的砌体容器中时,它不会拾取已经应用于先前加载的项目的网格布局。我使用包装在文档就绪函数中的以下代码:

// Masonry
var $container = $('#masonry-container');
$container.imagesLoaded(function () {
    $container.masonry({
        itemSelector: '.grid_4',
        isAnimated: true
    });
});

// AJAX Fotolia Image Search
var morebtn = $('.get-more-results');
var sOffset = 50;
morebtn.on('click', function () {
    var $cst = $('.crrsrch').text();
    $.ajax({
        type: "POST",
        url: "...",
        data: {};
        success: function (data) {
            $container.imagesLoaded(function () {
                $container.append(data);
                $container.masonry('appended', data);
            });
        }
    });
    return false;
});


AJAX调用中的项目被附加了,但是它们没有砌体布局-它们浮在列表的顶部,而不是附加显示。数据被附加在标记中。

使用砌体附加方法也会引发错误。我在控制台中得到以下内容:

Uncaught TypeError: Property 'webkitMatchesSelector' of object is not a function
    i
    r._filterFindItemElements
    r._getItems
    r.addItems
    r.appended
    t.fn.(anonymous function)
    (anonymous function)
    doneLoading


除最后两个((匿名函数)和doneLoading)外,其他每个都与砌石js文件相关。

通过使用石工现场的方法文档,这应该可以工作。显然我在这里错过了一些东西。

可能会帮助您的其他信息-
-AJAX调用是对Fotolia API的
-该网站基于Wordpress 3.5.2构建
-javascript文件已入队

如果有人有任何想法或可以提供帮助,将不胜感激。

提前谢谢了。

最佳答案

尝试在函数(成功)中声明砌体itemselector,就像我遇到的类似情况一样,一旦加载内容,就有助于应用$ container.masonry('reload');。

例如:

success: function (data) {
        $container.imagesLoaded(function () {
            $container.append(data);
            $container.masonry('appended', data);
            $container.masonry({
              itemSelector: '.grid_4',
           });
             $container.masonry('reload');
        });
    }

关于jquery - jQuery Masonry-附加后,AJAX返回的数据未获取砖石网格布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17698826/

10-11 23:58
查看更多