In una galleria di immagini sto provando ad integrare Shuffle.js per filtrare le immagini.
Il problema è che appena accedo alla pagina, Firebug mi segnala 3 errori:
- SyntaxError: import declarations may only appear at top level of a module
import 'custom-event-polyfill';
shuffle.js riga 3
- TypeError: $grid.shuffle is not a function
$grid.shuffle({
shuffle_init.js riga 13 (riporto il contenuto del file in seguito)
- TypeError: $grid.shuffle is not a function
$grid.shuffle('update');
shuffle_init.js riga 41
Inizio del file shuffle.js, ma shuffle l'ho installato tramite npm, quindi non dovrebbe essere errato
Codice HTMLcodice:'use strict'; import 'custom-event-polyfill'; /***** RIGA 3 *****/ import matches from 'matches-selector'; import arrayUnique from 'array-uniq'; //altro
codice:<!DOCTYPE html> <html lang="it"> <head> <meta charset="utf-8"> <title>Marmi</title> <link href="assets/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div id="main"> <section id="materiali"> <div class="container"> <div class="text-center"> <h1>Marmi</h1> </div> <ul id="filter" class="galleria-filter text-center"> <li><a class="btn btn-default active" href="#" data-group="all">Tutti</a></li> <li><a class="btn btn-default" href="#" data-group="chiari">Chiari</a></li> <li><a class="btn btn-default" href="#" data-group="scuri">Scuri</a></li> </ul> <div class="row"> <ul class="materiali-items list-unstyled" id="grid"> <li class="col-xs-12 col-sm-4 col-md-3" data-groups='["chiari"]'> <figure class="materiali-item"> <img src="assets/images/marmi/marmo_acquamarina_thumb.jpg" alt="marmo Acquamarina" /> </figure> </li> <li class="col-xs-12 col-sm-4 col-md-3" data-groups='["scuri"]'> <figure class="materiali-item"> <img src="assets/images/marmi/marmo_ambrato_thumb.jpg" alt="marmo Ambrato" /> </figure> </li> <!-- poi altre immagini --> <!-- sizer --> <li class="col-xs-12 col-sm-4 col-md-3 shuffle_sizer"></li> </ul><!--/#grid--> </div> </div> </section><!--/#materiali--> </div><!-- /#main --> <script src="assets/js/jquery.js"></script> <script src="assets/js/bootstrap.min.js"></script> <script src="assets/js/shufflejs/src/shuffle.js"></script> <script src="assets/js/shuffle_init.js"></script> </body> </html>
Codice shuffle_init.js
Riuscite a vedere cosa c'è che non va?codice:var shuffleme = (function( $ ) { 'use strict'; var $grid = $('#grid'), $filterOptions = $('.galleria-filter li'), $sizer = $grid.find('.shuffle_sizer'), init = function() { setTimeout(function() { listen(); setupFilters(); }, 100); $grid.shuffle({ /*************** RIGA 13 *************/ itemSelector: '[class*="col-"]', sizer: $sizer }); }, setupFilters = function() { var $btns = $filterOptions.children(); $btns.on('click', function(e) { e.preventDefault(); var $this = $(this), isActive = $this.hasClass( 'active' ), group = isActive ? 'all' : $this.data('group'); if ( !isActive ) { $('.galleria-filter li a').removeClass('active'); } $this.toggleClass('active'); $grid.shuffle( 'shuffle', group ); }); $btns = null; }, listen = function() { var debouncedLayout = $.throttle( 300, function() { $grid.shuffle('update'); /*************** RIGA 41 *************/ }); $grid.find('img').each(function() { var proxyImage; if ( this.complete && this.naturalWidth !== undefined ) { return; } proxyImage = new Image(); $( proxyImage ).on('load', function() { $(this).off('load'); debouncedLayout(); }); proxyImage.src = this.src; }); setTimeout(function() { debouncedLayout(); }, 500); }; return { init: init }; }( jQuery )); $(document).ready(function() { shuffleme.init(); });

Rispondi quotando