【发布时间】:2013-06-03 22:53:15
【问题描述】:
所以我正在使用 jQuery Masonry,我想在每次加载帖子时调用一些 jQuery:
function manipulate(id) {
$(id).each(function(){
if($(this).height()>200){
$('#container2').append(this);
} else{
$('#container').append(this);
};
});
};
所以我想每次加载 Masonry 容器中的下一个项目时调用这个函数。这样,它以正确的方式操纵项目。我该怎么做?
更新:砌体描述
Masonry 是一个 Javascript 插件,就像 CSS 浮动强制完美适应 + 无限滚动。如果没有无限滚动,它会完全隐藏第 1 页上不会出现的所有内容,然后在必要时加载它们。这意味着我的函数不会影响任何隐藏的项目,并且需要在 Masonry 加载下一组项目时重新调用,以便它们出现在正确的位置。这可能意味着在不了解 Masonry 的情况下,您不一定可以解决我的问题,但您仍然可以。最后,Masonry 将项目“附加”到 Masonry 容器,然后“显示”它们。所以我想我需要做的是在将它们附加到 Masonry 容器之后,但在显示之前将它们附加到正确的容器中。
砌体代码:
$(window).load(function(){
var $wall = $('#container');
$wall.imagesLoaded(function(){
$wall.masonry({
itemSelector: '#entry, #entry_photo',
isAnimated : false
});
});
$wall.infinitescroll({
navSelector : '#page-nav',
nextSelector : '#page-nav a',
itemSelector : '.entry, .entry_photo',
bufferPx : 2000,
debug : false,
errorCallback: function() {
$('#infscr-loading').fadeOut('normal');
}},
function(newElements) {
var $newElems = $(newElements);
$newElems.hide();
$newElems.imagesLoaded(function(){
$wall.masonry( 'appended', $newElems,{isAnimated: false}, function(){$newElems.fadeIn('slow');} );
});
}); $('.entry').show(500);
});
我已经尝试将这个函数放在 Masonry 块中,甚至作为 $newElems 函数,看看它是否会在加载更多图像时工作,但它没有,实际上有点破坏它。
如何让它运行 Masonry 通过我的 jQuery 加载的所有新元素,以便将它们附加到正确的容器中?
【问题讨论】:
-
我试图回答您的问题,但无法回答,因为我不清楚这个问题。如果不是绝对需要了解
masonry是什么来回答您的问题,那么您可能需要澄清一些细节。例如,什么会触发 jQuery 触发?是否有一个名为“masonry”的 div 会更改数据?由于用户交互,页面上发生了什么变化? -
@gibberish, masonry 是一个 jquery 插件,用于执行动态平铺布局,其中平铺大小可以变化。
-
@gibberish 是的,它也有无限滚动,这是它的相关部分。我添加了砌体的详细描述以及特定于我的问题的砌体的特定部分
-
伙计,mansonry 文档的第一行是
Methods。第一个描述的方法是appendend。它举例说明了如何在新添加的元素上执行某些操作 -
我知道,我在我的代码中使用它们,但由于某种原因,除非我遗漏了什么,否则它不会运行外部函数。我将为您发布我的砌体代码。在这种情况下我的附加不起作用的原因是它不会将它附加到两个单独的容器中。
标签: javascript jquery jquery-masonry