在 jQuery Masonry 中附加项目的问题
Issue with appending items in jQuery Masonry
我正在尝试用一堆瓷砖进行砖石布局,其中一些包含图像。大致是我的代码:
var $mainContent = $('#main-content');
$mainContent.imagesLoaded(function() {
$mainContent.masonry()
});
loadMore = function() {
$.ajax({
url: '/things',
success: function (data) {
var $data = $(data);
$data.imagesLoaded(function() {
$mainContent.append($data).masonry('appended', $data, true)
})
}
})
}
$('#load-more').on('click', loadMore)
但是,当我运行它时,我在 Chrome 的控制台中收到以下错误:
Uncaught TypeError: Cannot read property 'width' of undefined
跟踪:
bB jquery.min.js:2
f.each.f.cssHooks.(anonymous function).get jquery.min.js:4
f.extend.css jquery.min.js:4
f.each.f.fn.(anonymous function) jquery.min.js:4
e.extend.access jquery.min.js:2
f.each.f.fn.(anonymous function) jquery.min.js:4
f.each.f.fn.(anonymous function) jquery.min.js:4
$.Mason._placeBrick jquery.masonry.js:246
$.Mason.layout jquery.masonry.js:172
$.Mason._appended jquery.masonry.js:352
$.Mason.appended jquery.masonry.js:341
我正在使用砌体 v.2.1.05 和 jQuery v1.7.2
但是,当我改为reload
而不是appended
时,它的工作方式与演示中一样,但我希望从底部填充帖子,并且我不希望重新计算所有帖子。
你知道发生了什么吗?
我也把这个问题放在github上,但我还没有得到回应。
这正是我需要的动画并正确渲染各种尺寸的图像:
var el = jQuery(html);
el.imagesLoaded(function() {
$('#container').append(el).masonry( 'appended', el );
});
我不确定这是问题的答案,但是......请耐心等待,我在这里大声思考...
鉴于.append($data)
出现在$data.imagesLoaded
处理程序中,因此不清楚该事件将如何触发。我这么说是基于我的理解,浏览器不会尝试加载图像,直到基于 data
的片段(大概是 HTML 字符串)加载到 DOM(带有 .append()
)。
以下内容更有意义:
loadMore = function() {
$.ajax({
url: '/things',
success: function (data) {
var $data = $(data);
$data.imagesLoaded(function() {
$mainContent.masonry('appended', $data, true);
}).appendTo($mainContent);
}
});
};
也就是说,在您的代码中,imagesLoaded
事件必须触发,否则为什么会出现错误?也许图像确实加载到未附加的片段中!
无论如何,试试我的版本。我想它要么有效,要么给出与以前相同的错误。
试试这个解决方案...这肯定会奏效。
//Initiate your maosnry
$container = $('#container');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector: '.item'
});
});
//and on ajax call use this to append or prepend
$container.append($data).imagesLoaded(function(){
$container.masonry( 'appended', $data, true );
});
相关文章:
- Firebase API 问题与 AngularJS 网站示例项目
- NetSuite行项目删除内部循环问题
- 我正试图获得一个带有复选框的多选下拉列表,在填充项目和获得所有选中的工作时遇到了一些问题
- 在 jQuery Masonry 中附加项目的问题
- Knockout JS + JQuery UI - 在重新排序后从可观察数组中删除项目的问题
- 从 JSON 数据创建 HTML 项目符号列表时出现问题
- Instagram API 和 jquery 的问题:无法显示项目
- visual studio和Asp.net mvc3项目的问题
- 输入中的ngBlur和该输入框中搜索的列表项目之间的问题
- 从列表中删除项目时出现问题
- JSSOR的项目符号导航问题
- AngularJS+simpleCart问题显示购物车内容,直到添加项目
- Knockout-弹出问题编辑项目
- 关于将数组项目处理为分区的问题
- 将Materialize导入Aurelia项目时出现问题
- CSS/jQuery:将项目放在窗口高度会导致布局问题
- Angular RSS阅读器项目的时间问题
- Firebase FCM React项目问题- Firebase -messaging-sw.js类型错误
- Bootstrap tagsinput添加项目问题
- 可拖动项目问题