2012-06-26 5 views
10

Sto usando flexslider. V'è un esempio sotto il rubinetto avanzata sulla this pagina (nella sezione "Il nuovo, robusto richiamata API" dove usano slider.currentSlide per ottenere il numero della diapositiva corrente.Come posso ottenere il numero dell'immagine corrente di "Flexslider" in una variabile che posso usare in una funzione?

Come posso accedere a questo valore in un funzione completamente diversa? Sto pensando a una variabile globale ma non so se funzionerà e non so se è possibile dichiarare una variabile all'interno di una funzione come globale

risposta

17

È possibile dichiarare una variabile globale e imposta il valore nella funzione di callback successiva. Ecco alcuni pseudocodici per aiutarti a ottenere l'idea:

var curSlide; 
$(window).load(function() { 
    $('.flexslider').flexslider({ 
    after: function(slider) { 
     window.curSlide = slider.currentSlide; 
    } 
    }); 
}); 

function useCurSlideHere() { 
    alert(window.curSlide); 
} 

Anche se idealmente si evita di utilizzare una variabile globale e si può rendere la funzione useCurSlideHere in una classe che si crea un'istanza di window.load e usarla quando si passa la variabile curSlide nella funzione after callback.

$(window).load(function() { 
    var customSlider = new useCurSlideHere(); 
    $('.flexslider').flexslider({ 
    after: function(slider) { 
     customSlider.setCurSlide(slider.currentSlide); 
    } 
    });  
}); 

function useCurSlideHere() { 
    this.curSlide = 0; 

    this.setCurSlide = function(curSlide) { 
    this.curSlide = curSlide; 
    } 

    this.getCurSlide= function() { 
    alert(this.curSlide); 
    } 
} 

MODIFICA: Modificata la risposta per utilizzare slider.currentSlide.

+2

buona risposta, ma c'è in realtà un modo molto più pulito e più semplice di fare questo, si prega di vedere la mia risposta qui sotto. – Lewis

+0

non funziona più slider.currentSlide non è definito. @ La risposta di Lewis fa il lavoro. – D34dman

33

È possibile evitare variabili globali accedendo l'oggetto flexslider con:

$(element).data('flexslider') 

Quindi nel tuo caso devi usare:

$(element).data('flexslider').currentSlide 
+1

Questa è una risposta migliore di quella accettata. – agconti

+0

Nice one @Lewis –