Javascript.RU

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

Как заставить работать плагин с динамически добавленными элементами?
Привет! Есть сайт, на сайте подключён плагин Justified Gallery, который создаёт горизонтальную сетку масонри и заполняет всю страницу картинками так. Под картинками в самом конце расположена кнопка "Показать ещё", при нажатии на которую аяксом подгружаются ещё картинки, с первой страницей всё работает, но при подгрузки новых картинок происходит вполне логичная вещь - плагин их не выравнивает, потому что при загрузке дерева dom этих элементов не было. Но это я так сам догадываюсь, может я и не прав. Как быть? Что делать? Сижу над этой проблемой уже 3 дня. Пробовал .on, но какой тип обработчик указывать? Ведь read - не поддерживается в нём (вставлял 'load' -реакции ноль), пробовал запускать плагин повторно через ajaxSetup, где вызывал эту функцию в complete - тоже ноль. Как быть? Помогите! А то уже крыша едет от этой фигни.

Аякс запрос:
$.ajax({
			url:ajaxurl, // обработчик
			data:data, // данные
			type:'POST', // тип запроса
			success:function(data){
				if( data ) { 
					$('.image').append(data); // вставляем новые посты
					current_page++; // увеличиваем номер страницы на единицу
					if (current_page == max_pages) $("#true_loadmore").remove(); // если последняя страница, удаляем кнопку
				} else {
					$('#true_loadmore').remove(); // если мы дошли до последней страницы постов, скроем кнопку
                    
				}
			}
		});


Подключение плагина на странице:

$('.image').justifiedGallery({
                    rowHeight : 300,
                    margins : 5,
                    captions: false
                });


Html-код элемента где выводятся картинки (с первой порцией картинок, к которым подгружаются другие):

<div class="image justified-gallery" style="height: 450px;">
                                                                 
                                        <a href="#content-pupop" data-popup="44" class="item" style="width: 755px; height: 450px; top: 0px; left: 0px; opacity: 1;"><img src="http://demo.local/wp-content/uploads/2016/03/photo-7_b.jpg" alt="" style="width: 755px; height: 500px; margin-left: -377.5px; margin-top: -250px;"></a>
                                        
                                                                        
                                        <a href="#content-pupop" data-popup="41" class="item" style="width: 332px; height: 450px; top: 0px; left: 760px; opacity: 1;"><img src="http://demo.local/wp-content/uploads/2016/03/photo-5.jpg" alt="" style="width: 332px; height: 501px; margin-left: -166px; margin-top: -250.5px;"></a>
                                        
                                                                        
                                        <a href="#content-pupop" data-popup="39" class="item" style="width: 330px; height: 450px; top: 0px; left: 1097px; opacity: 1;"><img src="http://demo.local/wp-content/uploads/2016/03/photo-4.jpg" alt="" style="width: 330px; height: 498px; margin-left: -165px; margin-top: -249px;"></a>
                                        
</div>

<div id="true_loadmore">Загрузить ещё</div>
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2016, 23:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

decadent42,
здесь помедитировать не пробовали?
http://miromannino.github.io/Justifi...ndless-scroll/
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2016, 12:00
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

Да, пробовал. Но как это использовать с аякс запросом? Когда просто указываю $('.image').justifiedGallery('norewind'); - ничего не происходит.
Ответить с цитированием
  #4 (permalink)  
Старый 08.04.2016, 15:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

decadent42,
в каком месте вы ставили этот код?
Ответить с цитированием
  #5 (permalink)  
Старый 08.04.2016, 15:20
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

На html странице, пробовал и в succes, но там, понятное дело, ошибку выдало
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2016, 15:21
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

Там где подключается плагин.
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2016, 15:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

decadent42,
в 8 строке этот код должен быть
Ответить с цитированием
  #8 (permalink)  
Старый 08.04.2016, 15:40
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

Пробовал:
success:function(data){
				if( data ) { 
					$('.image').append(data); // вставляем новые посты
                    $('.image').justifiedGallery('norewind');
					current_page++; // увеличиваем номер страницы на единицу
					if (current_page == max_pages) $("#true_loadmore").remove(); // если последняя страница, удаляем кнопку
				} else {
					$('#true_loadmore').remove(); // если мы дошли до последней страницы постов, скроем кнопку
                    
				}
			}


Выдаёт ошибку: Uncaught TypeError: $(...).justifiedGallery is not a function
Ответить с цитированием
  #9 (permalink)  
Старый 08.04.2016, 16:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

decadent42,
значит что-то не договариваите про инициализацию плагина или про $
Ответить с цитированием
  #10 (permalink)  
Старый 08.04.2016, 16:23
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

А что ещё нужно добавить? выполнение ajax происходит в отдельном файле. Файл подключён к странице:
Код:
<script type="text/javascript" src="<?php bloginfo('template_directory');?>/loadmore.js"></script>
Вот и выводит в консоли, что эта функция неизвестна.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как работать с maskre demi ExtJS 7 26.08.2013 19:32
нужно заставить одновременно работать слайдер и модальное окно обратной связи kvant355 Javascript под браузер 3 22.07.2013 16:34
Как загрузить и заставить работать скрипт после загрузки frame? Chifu Общие вопросы Javascript 3 13.04.2013 14:18
Как заставить работать оперу и мозилу? SDone AJAX и COMET 6 25.02.2009 16:05
наследование установок динамически создаваемыми элементами majestic jQuery 1 15.09.2008 13:21