【问题标题】:Masonry items not reloaded when cliking ajax load more button单击ajax加载更多按钮时砌体项目不会重新加载
【发布时间】:2015-03-05 09:59:24
【问题描述】:

大家好,我有一个关于砌体的问题。

我从 codepen.io

创建了这个 DEMO

在这个演示中,你可以看到这个 javascript 代码:

$(window).load(function()
{
$( function() {
var $container = $('.posts-holder');
    $container.masonry({
      isFitWidth: true,
      itemSelector: '.kesif-gonderi-alani'
    });

});
});

当一个页面打开时,我只显示 10 个帖子。如果用户想显示其他 10 个帖子,则用户需要单击(显示更多按钮)。我创建了这个 ajax 函数来显示更多帖子。

$('.showmore').live("click",function(event) 
{
event.preventDefault();
var ID = $(this).attr("id");
var P_ID = $(this).attr("rel");
var URL=$.base_url+'diger_fotograflar_ajax.php';
var dataString = "lastid="+ ID+"&profile_id="+P_ID;

if(ID)
{
$.ajax({
type: "POST",
url: URL,
data: dataString, 
cache: false,
beforeSend: function(){ $("#more"+ID).html('<img src="wall_icons/ajaxloader.gif" />'); },
success: function(html){
$("div.posts-holder").append(html).each(function(){
   $('.posts-holder').masonry('reloadItems');
 });
$("#more"+ID).remove();
}
});
}
else
{
$("#more").html('The End');// no results

}

return false;
});

此代码在单击显示更多按钮 $('.posts-holder').masonry('reloadItems'); 时有效,但在一个地方收集新帖子。但是当我改变页面的宽度时,一切都在改善。

【问题讨论】:

  • 您的 div 是否都具有相同的高度?如果是这样,请尝试显式设置高度值。
  • @Nitish no answer image div 是示例。真正的帖子没有相同的高度。但是开发者控制台代码和我的问题图片一样。
  • 尝试将您的代码更改为: $("div.posts-holder").append(html) ; $('.posts-holder').masonry('reloadItems');
  • @Nitish 没有任何改变 同样的问题仍在继续。

标签: javascript jquery css ajax masonry


【解决方案1】:

我认为您可以在添加元素后使用$container.masonry();,如下所示:

$("div.posts-holder").append(html).each(function(){
    $('.posts-holder').masonry('reloadItems');
});

$container.masonry();

你可以看到它在工作here

希望能有所帮助。

【讨论】:

  • 感谢您的回答。我之前和现在仍然尝试这个,但没有任何改变,同样的问题将继续存在。
  • @innovation 如您所见,它正在处理这个jsfiddle 也许您忘记告诉我们有关您的代码的更多详细信息,因为我使用您的代码进行测试。
  • @innovation 我在codepen 上对其进行了测试,它正在工作。
  • 我给你发了一封邮件,你能帮我查一下吗?
【解决方案2】:

你必须使用砌体的附加方法......否则它怎么知道你添加了任何新元素。

添加元素不会使它们对齐,因为砌体没有任何事件监听器来添加新元素。

  var el = $('<div class="kesif-gonderi-alani" style="height:300px;"></div>') 
  $container.masonry().append( el ).masonry( 'appended',el );  

她是 codepen 上的小演示 ​​http://codepen.io/knaman2609/pen/xbJMRY

点击按钮动态追加元素

http://masonry.desandro.com/methods.html

【讨论】:

  • 没有改变同样的问题继续存在。
  • 在演示中,元素添加到正确的位置...当您获得新的元素集时,使用 jquery 包装它们并附加
  • 我知道 [MASONRY](masonry.desandro.com/methods.html) 链接。您的小型演示工作正常,但我仍然尝试但没有任何改变。一切都是一样的......所以你说所有的高度都是 300px 那是什么?你看到我的DEMO
  • 给你想要的任何高度......我只是从你的代码中复制了那个 div 就是这样......除了你的 codepen 中没有显示更多脚本
  • 原页面是这样的请点击HERE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多