Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2018, 12:18
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Ajax загрузка в Masonry
Здравствуйте!
Сайт на Wordpress. Записи блога вывожу в сетку масонри
<div class="row" id="ms-container">
	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<div class="ms-item">
 		<?php get_template_part( 'content', 'masonry' ); ?>
	</div>
    <?php endwhile;?>
     <?php endif; ?>
	
</div>
<script type="text/javascript">
	
	jQuery(window).load(function() {
		var container = document.querySelector('#ms-container');
		var msnry = new Masonry( container, {
			itemSelector: '.ms-item',
			columnWidth: '.ms-item',                
		});  
		
	});
	
	
</script>

Все отлично работает... но нужно еще заменить пагинацию на aiax загрузку постов по кнопке "Загрузить еще". Я в js не силен, поэтому покопавшись в интернете и с помощью "метода тыка" сделал файл loadmore.js вот с таким кодом:
jQuery(function($){
	$('#true_loadmore').click(function(){
		$(this).text('Загружаю...'); // изменяем текст кнопки
		var data = {
			'action': 'loadmore',
			'query': true_posts,
			'page' : current_page
		};
		$.ajax({
			url:ajaxurl, // обработчик
			data:data, // данные
			type:'POST', // тип запроса
			success:function(data){
			
			


		if( data ) { 
		current_page++; // увеличиваем номер страницы на единицу
				
 $('#ms-container').masonry();	
			
var $items = $(data ); // data is the HTML of loaded posts

$('#ms-container').append( $items ).masonry( 'appended', $items );
$container = $('#ms-container');

$("#ms-container").append().each(function(){
    $('#ms-container').masonry('reloadItems');
});
//$container.masonry();
$('#true_loadmore').text('Загрузить ещё');

					
					if (current_page == max_pages) $("#true_loadmore").remove(); // если последняя страница, удаляем кнопку
				} else {
					$('#true_loadmore').remove(); // если мы дошли до последней страницы постов, скроем кнопку
				}
			}
		});
	});


	
});

Эта штука тоже, вроде как, работает... Но только новые блоки периодически налазят на старые и в конце получается уже совсем не красиво. Вероятно нужно добавить какие-то дополнительные параметры для правильного вычисления.. Помогите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2018, 12:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Igorsrt,
картинки есть в блоках?
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2018, 12:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Igorsrt,
вариант
<script src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.js"></script>
  <script>
jQuery(function($) {
    $('#true_loadmore').click(function() {
        $(this).text('Загружаю...'); // изменяем текст кнопки
        var data = {
            'action': 'loadmore',
            'query': true_posts,
            'page': current_page
        };
        $.ajax({
            url: ajaxurl, // обработчик
            data: data, // данные
            type: 'POST', // тип запроса
            success: function(data) {
                if (data) {
                    var $items = $(data),
                        $container = $('#ms-container');
                    $container.append($items).imagesLoaded(function() {
                        $container.masonry("appended", $items).masonry("layout")
                    })
                    $('#true_loadmore').text('Загрузить ещё');
                    if (current_page == max_pages) $("#true_loadmore").remove(); // если последняя страница, удаляем кнопку
                } else {
                    $('#true_loadmore').remove(); // если мы дошли до последней страницы постов, скроем кнопку
                }
            }
        });
    });
 });
  </script>
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2018, 13:46
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

да, картинки есть..
Сейчас попробовал с Вашим кодом - вроде все хорошо получается
Спасибо, выручили в очередной раз.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
загрузка через AJAX в модальные окна hardware AJAX и COMET 2 20.01.2014 11:48
загрузка через AJAX в модальные окна hardware jQuery 4 09.01.2014 21:33
AJAX + PHP загрузка файлов с сервера Stanisov AJAX и COMET 10 16.08.2013 11:18
Загрузка страниц с помощью ajax radikal AJAX и COMET 3 29.11.2012 16:26
загрузка файла по принципу ajax neadekvat Общие вопросы Javascript 2 12.05.2009 22:23