jquery - Verändern von Plugin Variablen

DiDiJo

Erfahrenes Mitglied
Hi Leute,

ich bin dabei mein erstes jQuery Plugin fertigzustellen. Generell läuft es schon super, aber ich möchte gerne noch die ein oder andere Funktion für Mobile-Devices einbauen.

Bei meinem Plugin handelt es sich um ein Image-Carousel, was sich selbstständig der Höhe und Breite anpasst und auch noch nach einen Resize des Fensters (oder Orientationchange) gut aus sieht. Das ganze läuft auch schon.

Nun möchte ich aber die Variable der darzustellenden Slides abändern und zwar bevor das Plugin initialisiert wird.

Ich habe dafür folgenden Aufbau in meinem Plugin:

Code:
(function($){
	$.fn.didiCarousel = function(settings) {
		var defaults = {
			displaySlideQty	: 2,
			moveSlideQty		: 2,
			delayFadeTime		: 500,
			delaySteps		: 350,
			onBeforeInit		: function() {},	
			onAfterInit		: function() {},
			onLoaded			: function() {},	
			onBeforeSlide		: function(direction) {}
		};
				
		var $this = $(this);
		var settings;
		var maxVisibleItem = settings.displaySlideQty;

		var initCarousel = function() {		
			settings.onBeforeInit();			
			settings = $.extend({}, defaults, settings); 
						
			// Diverser Code
			
			settings.onAfterInit();
		}
		
		var refreshCarousel = function() {
			clearContent();
			initCarousel();
		}
		
		$(window).resize(function(){ 
			refreshCarousel(); 
		});
		
		$(window).load(function() { 
			settings.onLoaded();
		}); 

		initCarousel();
	}
	
})(jQuery);


Um das Plugin zu initialisieren habe ich folgenden Code:
Code:
	var mySlider = $('#myCarousel').didiCarousel({	
		displaySlideQty	: 1,
		moveSlideQty		: 1,
		speed			: 500,
											
		onBeforeInit:	function() {
			window.onorientationchange = function() {	
				//alert("ori change before init");								
				alert("ori change start");
				$.fn.didiCarousel.settings.displaySlideQty = 2;
				$.fn.didiCarousel.settings.moveSlideQty = 2;
				alert("ori change done");				
			};												
		},
		onAfterInit:	function() {
			// Unwichtiger Code nach der Initialisierung
		},
		onBeforeSlide:	function() {
			// Unwichtiger Code vor jedem Slide
		},
		onLoaded:	function() {
			// Unwichtiger wenn alles geladen wurde	
		}

Wie Ihr sehen könnt, versuche ich bei "onBeforeInit" einen "onorientationchange" zu triggern, der dann die meine Variablen, die ich an den Slider übergeben habe, verändert. Der orientationchange wird auch getriggert, allerdings kommt es zu Fehlern und das zweite alert wird nicht mehr ausgeführt.

Kann mir einer von euch verraten, wie ich bei "onBeforeInit" meine übergebenen Variablen verändern kann?


Als kleiner Pluspunkt:
Wie kann ich von ausserhalb eine Funktion innerhalb meines Plugins aufrufen. Bis jetzt sind alle Funktionen (im Plugin) so deklariert:
Code:
var refreshCarousel = function() {
	clearContent();
	initCarousel();
}

Könnte ich diese Funktion auch von außerhalb aufrufen oder muss ich die anders deklarieren. Wie sähe ein solcher Aufruf aus?

Mfg Daniel!
 

Neue Beiträge

Zurück