twbs simple example bootstrap javascript jquery ajax pagination

javascript - simple - Iniciar mampostería: después del desplazamiento infinito y la búsqueda paramétrica



simple pagination.js example (1)

El problema se resolvió eliminando parte de la duplicación, etc.

Luego usando lo siguiente:

(function( $ ) { "use strict"; var $container = $(''.masonry-container''); $container.imagesLoaded( function () { $container.masonry({ columnWidth: ''.item'', percentPosition: true, itemSelector: ''.item'' }); }); $( document ).on( ''js_event_wpv_pagination_completed'', function( event, data ) { $container.masonry(''reloadItems'').masonry(); }); $( document ).on( ''js_event_wpv_parametric_search_results_updated'', function( event, data ) { $container.masonry(''reloadItems'').masonry(); }); $( document ).on( ''js_event_wpv_pagination_completed'', function( event, data ) { $container.masonry(''reloadItems'').masonry(); $container.imagesLoaded( function() { $container.masonry(); }); }); $( document ).on( ''js_event_wpv_parametric_search_results_updated'', function( event, data ) { $container.masonry(''reloadItems'').masonry(); $container.imagesLoaded( function() { $container.masonry(); }); }); })(jQuery);

Esto fue agregado en footer.php.

Tener un problema con la cuadrícula AJAX y Masonry . La grilla de mampostería es simple, no se inicia en los momentos correctos.

Antes de desplazarse o usar la búsqueda paramétrica para ir a una categoría específica, funciona muy bien.

Sitio de muestra se puede encontrar aquí .

Albañilería

Masonry es una biblioteca de diseño de cuadrícula de JavaScript. Usado normalmente con Bootstrap u otro sistema de cuadrícula que no alinea los elementos correctamente. Ejemplo:

Solo arranque:

Bootstrap y Masonry:

Cuando se desplaza

Las siguientes columnas se agregan por encima de las anteriores. Da casi el mismo resultado que las imágenes descargadas, lo que hace que las imágenes se superpongan. Esto normalmente se resuelve utilizando imagesLoaded que ya he incluido en el código provisto.

Al usar la búsqueda paramétrica

La Masonería no está siendo despedida después del AJAX. Lo que significa que no funciona en absoluto. Entonces, las columnas se están cargando sin mampostería.

Por favor mira el sitio de muestra .

Tanto la búsqueda de desplazamiento como la paramétrica son entregadas por Toolset . Tienen un buen sistema con lo que es muy fácil cargar JS en momentos específicos:

  • Después de que se haya completado la paginación AJAX con Toolset .
  • Cuando se ha activado la búsqueda paramétrica.
  • Cuando se han recopilado los datos de búsqueda paramétrica.
  • Cuando se ha actualizado el formulario de búsqueda paramétrica.
  • Cuando los resultados de búsqueda paramétrica se han actualizado.

Entonces, ambos después de la paginación y antes / durante / después de la búsqueda paramétrica . Como el problema está después del desplazamiento, y después de actualizar los resultados de la búsqueda paramétrica, me gustaría iniciar la grilla de mampostería en este mismo momento.

El ejemplo más fácil es cuando se realiza el desplazamiento, o paginación como también se llama.

Lo que he intentado

reloadItems como suponía que sería correcto. Por favor, corríjame si estoy equivocado. Recurso .

jQuery( document ).on( ''js_event_wpv_pagination_completed'', function( event, data ) { $container.masonry(''reloadItems'') });

En mi teoría, volvería a cargar todos los elementos cuando se desplazara, por lo que se organizarían correctamente. Pero no cambia nada.

También he intentado lo siguiente:

jQuery( document ).on( ''js_event_wpv_pagination_completed'', function( event, data ) { var $container = $(''.masonry-container''); $container.imagesLoaded(function() { $container.masonry(''reload''); $container.masonry({ isInitLayout : true, itemSelector: ''.col-md-3'' }); }); //and on ajax call append or prepend $container.prepend($data).imagesLoaded(function(){ $container.masonry( ''prepended'', $data, true ); }); });

También traté de volver a cargar los elementos cuando se actualizaron los resultados de la búsqueda paramétrica.

jQuery( document ).on( ''js_event_wpv_parametric_search_results_updated'', function( event, data ) { $container.masonry(''reloadItems'') });

Pero esto tampoco funcionó.

La masonería también se agrega en el pie de página utilizando uno de los métodos.

(function( $ ) { "use strict"; var $container = $(''.masonry-container''); $container.imagesLoaded( function () { $container.masonry({ columnWidth: ''.col-md-3'', percentPosition: true, itemSelector: ''.col-md-3'' }); }); })(jQuery);

¿Tienes alguna idea? ¿Dónde estoy haciendo mal?

Editar 1:

Error de consola

Al cargar la página

UnEdge ReferenceError: los datos no están definidos

Cuando se desplaza

Unloading ReferenceError: $ container no está definido

Cambió la función a la siguiente

(function( $ ) { // Initiate Masonry "use strict"; var $container = $(''.masonry-container''); $container.imagesLoaded( function () { $container.masonry({ columnWidth: ''.item'', percentPosition: true, itemSelector: ''.item'', isAnimated: true // the animated makes the process smooth }); }); $(window).resize(function() { $(''.masonry-container'').masonry({ itemSelector: ''.item'', isAnimated: true }, ''reload''); }); })(jQuery); //and on ajax call append or prepend more items var $data = $(data).filter(".item"); $container.prepend($data).imagesLoaded(function(){ $container.masonry( ''prepended'', $data, true ); });

Imágenes actualizadas cargadas a la última versión

También actualicé imágenes cargadas a la última versión.

El script se puede encontrar aquí .

Añadido .item

.item el elemento de clase en lugar de usar col-md-3, ya que pensé que sería una mejor solución.

Lo que significa que el HTML es el siguiente en este momento:

<div class="container"> <div class="masonry-container"> <div class="item"> <!-- Content comes here --> </div> <div class="item"> <!-- Content comes here --> </div> <div class="item"> <!-- Content comes here --> </div> <div class="item"> <!-- Content comes here --> </div> ... </div> </div>

Y así.

Aún errores de consola.

Alguna solución?