2016-08-03 25 views
0

Hallo, ich bin neu in Javascript/Programmierung und ich kann keine vernünftige Lösung für ein Skript finden, die für die Bereitstellung von Parametern zu jeder Fotogalerie verantwortlich ist. Das Skript funktioniert gut, aber wie ich geschrieben habe, denke ich, dass es vereinfacht werden kann, um keine Parameter zu wiederholen. Es gibt nur einen Parameter (den Klassenselektor), der sich von jedem Galerie-Skript ändert.Skript JQuery Gallery, übergeben Sie die CSS-Klasse als Parameter einer Funktion

$(document).ready(function() { 
     $('.popup-gallery-wakipo').magnificPopup({ // HERE THE CLASS SELECTOR 
     delegate: 'a.gallery_portf', 
     type: 'image', 
     tLoading: 'Loading image #%curr%...', 
     mainClass: 'mfp-img-mobile', 
     gallery: { 
      enabled: true, 
      navigateByImgClick: true, 
      preload: [0,1] 
     }, 
     image: { 
      tError: '', 
      titleSrc: function(item) { 
      return item.el.attr('title') + ''; 
      } 
     } 
     }); 


     $('.popup-gallery-instacash').magnificPopup({ // HERE THE CLASS SELECTOR 
     delegate: 'a.gallery_portf', 
     type: 'image', 
     tLoading: 'Loading image #%curr%...', 
     mainClass: 'mfp-img-mobile', 
     gallery: { 
      enabled: true, 
      navigateByImgClick: true, 
      preload: [0,1] 
     }, 
     image: { 
      tError: '', 
      titleSrc: function(item) { 
      return item.el.attr('title') + ''; 
      } 
     } 
     }); 

etc ...

So ist die Frage, wie dieses Skript modularisieren nur für diese Klasse Wähler als Parameter übergeben. Vielleicht mit einem Objekt Construtor/Methode, habe ich versucht, aber ich habe es verloren

funktioniert diese
function Gallery (theclass){ 

    $('.' + theclass).magnificPopup({ 
     delegate: 'a.gallery_portf', 
     type: 'image', 
     tLoading: 'Loading image #%curr%...', 
     mainClass: 'mfp-img-mobile', 
     gallery: { 
     enabled: true, 
     navigateByImgClick: true, 
     preload: [0,1] 
     }, 
     image: { 
     tError: '', 
     titleSrc: function(item) { 
      return item.el.attr('title') + ''; 

     } 
     } 
    }); 

    } 

    var mySecondGallery = new Gallery("popup-gallery-wakipo"); 

    mySecondGallery(); 

Antwort

0

Versuchen:

function gallery(class) { 
    return $("." + class).magnificentPopup({ 
    ... 
    }); 
} 
var mySecondGallery = gallery("popup-gallery-wakipo"); 

Sie dann Zugriff auf das jQuery-Objekt haben.

+0

Entschuldigung, ich habe so, und funktioniert nicht. Hier die originale JS-Datei: http://pastebin.com/tM002P5U – Dedalos01

+0

Benötigen Sie Zugriff auf das jQuery-Objekt oder genügt es, wenn der Code nur ausgeführt wird? – patrickcipot

+0

Ich bin mir nicht sicher, welche JS-Bibliothek die Galerie verwendet: - /, Ich weiß nur, dass dieses Skript funktioniert. Und diese Aufgabe, die Sie in der Las-Zeile geschrieben haben, muss nicht auf irgendeine Weise aufgerufen werden? Hier der HTML-Code einer der Galerien: http://pastebin.com/bqWATSpv finde die Klasse in der Zeile 4 heraus – Dedalos01