Итак, я пытаюсь реализовать бесконечную прокрутку в масонство, добавив частичное частичное, в отличие от добавления div. Добавление div - именно так работает Infinite Scroll jQuery plugin Paul Irish. Я использовал его, но теперь это бесполезно для меня, поскольку я хочу вместо этого добавлять частичные. Вы, вероятно, путают, но я буду стараться, чтобы очистить путаницы с кодами:Масонство бесконечной прокрутки (путем добавления частичного)? [Rails]
masonry.js
var $container = $('.postindex');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector: '.posts-wrapper',
isFitWidth: true,
percentPosition: true
});
});
pagination.js
$(document).ready(function() {
if ($('#infinite-scrolling').size() > 0) {
$(window).on('scroll', function() {
var more_posts_url;
more_posts_url = $('.pagination a.next_page').attr('href');
if (more_posts_url && $(window).scrollTop() > $(document).height() - $(window).height() - 60) {
$('.pagination').html('<img src="/assets/ajax-loader.gif" alt="Loading..." title="Loading..."/>');
$.getScript(more_posts_url);
}
});
}
});
index.html .haml
.postindex.transitions-enabled.infinite-scroll.page
.postin
[email protected] do |post|
= render 'posts/post', post: post
#infinite-scrolling
= will_paginate @posts
_post.html.haml (экстракт)
.posts-wrapper
.post
.image.center-block
%a{id: "imageurl_#{post.id}", href: "/", "data-gallery": ""}
= cl_image_tag(post.image.full_public_id, quality:"auto", fetch_format:"auto", width:640, crop: "scale", class: "img-responsive")
Таким образом, в этом случае, вместо добавления posts-wrapper
DIV, я хочу, чтобы добавить весь post
частично. Это именно то, как бесконечный код свитка был написано до того, как реализована Кладка:
index.js.erb
$('.postin').append('<%= j render @posts %>');
<% if @posts.next_page %>
$('.pagination').replaceWith('<%= j will_paginate @posts %>');
<% else %>
$(window).off('scroll');
$('.pagination').remove();
<% end %>
Это, конечно, не работает с масонством (прилагаемые элементы перекрывают существующие). Теперь, как я могу заставить это работать?
В случае, если вам интересно, почему мне нужно добавить частичное вместо DIV, у меня есть кусок сценария в конце _post.html.haml
, что мне нужно, чтобы убедиться, что выполняется каждый раз пост будет загружен. Вот полный файл:
_post.html.haml (полное)
.posts-wrapper
.post
.image.center-block
%a{id: "imageurl_#{post.id}", href: "/", "data-gallery": ""}
= cl_image_tag(post.image.full_public_id, quality:"auto", fetch_format:"auto", width:640, crop: "scale", class: "img-responsive")
:javascript
if ($(window).width() <= 800){
$("#imageurl_#{post.id}").attr("href", '#{escape_javascript(render :partial => 'posts/imageurl800', :locals => {:post => post })}');
}
else if ($(window).width() <= 1200) {
$("#imageurl_#{post.id}").attr("href", '#{escape_javascript(render :partial => 'posts/imageurl1200', :locals => {:post => post })}');
}
else if ($(window).width() <= 1600) {
$("#imageurl_#{post.id}").attr("href", '#{escape_javascript(render :partial => 'posts/imageurl1600', :locals => {:post => post })}');
}
else {
$("#imageurl_#{post.id}").attr("href", '#{escape_javascript(render :partial => 'posts/imageurl1920', :locals => {:post => post })}');
}
где _imageurl800.html.haml
является:
= cl_image_path(post.image.full_public_id, width:800, crop:"scale", class:"img-responsive")
и _imageurl1200.html.haml
является:
= cl_image_path(post.image.full_public_id, width:1200, crop:"scale", class:"img-responsive")
и так на.
В основном, что он делает, каждый раз, когда сообщение загружается, он проверяет ширину браузера и в зависимости от того, что он загружает изображение в галерее ("data-gallery": ""
) в определенном размере при нажатии. Надеюсь, я поняла. Если есть лучший способ справиться со всем, то, пожалуйста, предложите так. Благодаря!