ajax isotope
Mon Jan 20 2025 14:06:54 GMT+0000 (Coordinated Universal Time)
Saved by @StefanoGi
$(document).ready(function () { // Crea e aggiungi il loader dinamicamente const $loader = $('<div id="loader">Caricamento...</div>').css({ position: 'fixed', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', fontSize: '20px', background: 'rgba(255, 255, 255, 0.9)', padding: '15px 30px', border: '1px solid #ddd', display: 'none', }); $('body').append($loader); // Crea e aggiungi il contenitore della griglia dinamicamente const $grid = $('<div id="grid"></div>').css({ display: 'flex', flexWrap: 'wrap', marginTop: '20px', }); $('body').append($grid); // Aggiungi stili dinamici per gli elementi della griglia $('<style>') .text(` .grid-item { width: 30%; margin: 1%; background: #f0f0f0; padding: 20px; text-align: center; border: 1px solid #ddd; } `) .appendTo('head'); // Carica Isotope dinamicamente $.getScript('https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.min.js', function () { // Mostra il loader e avvia la chiamata AJAX $loader.show(); $.ajax({ url: 'https://jsonplaceholder.typicode.com/posts', // Endpoint di esempio method: 'GET', dataType: 'json', beforeSend: function () { $loader.show(); // Mostra il loader }, success: function (data) { // Genera dinamicamente gli elementi della griglia const items = data.slice(0, 9).map( (item) => `<div class="grid-item category${item.id % 3}">${item.title}</div>` ); $grid.append(items.join('')); // Inizializza Isotope $grid.isotope({ itemSelector: '.grid-item', layoutMode: 'fitRows', }); }, error: function (err) { console.error('Errore nel caricamento degli elementi:', err); }, complete: function () { $loader.hide(); // Nascondi il loader }, }); }); });
Comments