2012-04-12 3 views
11

Ho risolto il mio problema originale, ma mi chiedo se esiste una soluzione più elegante. Sto usando l'Orbit di Fondazione per creare una presentazione. Questa non è una semplice presentazione, è una presentazione in cui ogni diapositiva ha una didascalia di dati definita e all'interno di questa didascalia di dati c'è l'HTML che deve caricare una finestra di dialogo modale.C'è un modo per passare una funzione di inizializzazione a uno slideshow Orbita?

Se si utilizza Foundation, si pensa immediatamente all'utilizzo della libreria Reveal per visualizzare una finestra di dialogo modale, e lo farei, ma i requisiti richiedono l'uso di prettyPhoto. (. Questi sono i requisiti) Beh, il problema è che gli elementi nei dati-voce non sono interessati dalla chiamata di inizializzazione originale:

$("a[rel^='prettyPhoto']").prettyPhoto();

Che cosa devo fare è assicurarsi di inizializzare i dati di ogni -caption come è caricato. Bene, ecco il problema Ho risolto questo problema per le transizioni delle diapositive usando l'evento afterSlideChange, ma il problema è la prima diapositiva. Devo chiamare questo metodo per la prima diapositiva che viene visualizzata.

Ecco il codice che risolve questo problema:

<script type="text/javascript"> 
$(window).load(function() { 
    $('#featured').orbit({ 
     afterSlideChange:function() { 
      $("a[rel^='prettyPhoto']").prettyPhoto({ 
       default_width:640, 
       default_height:500, 
       theme:'light_square' 
      }); 
     }, // empty function 
     fluid:true       // or set a aspect ratio for content slides (ex: '4x3') 
    }); 
    $("a[rel^='prettyPhoto']").prettyPhoto({ 
     default_width:640, 
     default_height:500, 
     theme:'light_square' 
    }); 
}); 
</script> 

C'è un modo migliore per fare questo senza dover duplicare il codice. Devo definire un evento "initializeSlide" del mio, o c'è qualche risposta che mi manca?

+0

Hai trovato una soluzione per questo? –

risposta

3

Il cursore Orbita non espone così tanti metodi. Fortunatamente, ci sono alcuni semplici soluzioni alternative.

Ad esempio, è possibile impostare in questo modo:

$(window).load(function() { 
    var sliderChanged = (function sliderChanged(prevActive, active) { 
     $("a[rel^='prettyPhoto']").prettyPhoto({ 
      default_width: 640, 
      default_height: 500, 
      theme: 'light_square' 
     }); 
     return sliderChanged; 
    }()); 
    jQuery('#featured').orbit({ 
     afterSlideChange: sliderChanged, 
     fluid: true 
    }); 
}); 
+0

La mia domanda originale era http://stackoverflow.com/questions/16720069/how-to-get-the-callback-of-onload-event-for-orbit-slider-of-foundation-zurb-fram. Ho scelto di iniziare una taglia qui dato che sembrava simile e avevo bisogno di aspettare due giorni per avviarlo alla mia domanda. Potrebbe per favore dare un'occhiata alla mia domanda originale. Ho provato ad applicare quello che hai detto ma non ho potuto risolverlo. Sembra che mi manchi qualcosa. Grazie mille per l'aiuto. –

1

qui credo è possibile utilizzare evento carico dal jQuery

<script type="text/javascript"> 
    $(window).load(function() { 
     $('#featured').orbit({fluid:true}); 
     $("a[rel^='prettyPhoto']").load(function(){ 
     $(this).prettyPhoto({ 
      default_width:640, 
      default_height:500, 
      theme:'light_square' 
     }); 
     }); 
    }); 
</script> 
+0

@ Rohit, hai ragione, come Orbit, come dipendente da jQuery ..:) – MarmiK

+0

@MarmiK non ti ha preso –

+0

Il suo framework Orbit è costruito su jQuery, non funzionerà senza jQuery .. è uno di dipendenza .. ORbit usa anche solo jQuery .. :) – MarmiK

0

Si utilizza Dopo scorrere Change

riferimento Orbit documentation

'afterSlideChange function(){}, //Empty Function for you to use after slide change' 

Quindi questa chiamata svuoterà la funzione e dovrai chiamarla ancora e ancora ..

Ora, la mia domanda è perché lo stai facendo, qualche motivo particolare? In caso contrario, rimuovilo.

e secondo la mia percezione risposta di Rohit sopra farà il resto ...

Spero che questo farà :)

0

Con l'aggiornamento alla Fondazione 4 ora c'è un evento orbit:ready. L'evento si attiva quando viene caricato il cursore.