2012-04-12 16 views
11

Resolví mi problema original, pero me pregunto si hay una solución más elegante. Estoy usando la Órbita de la Fundación para crear una presentación de diapositivas. Esta no es una presentación de diapositivas simple, es una presentación de diapositivas en la que cada diapositiva tiene un subtítulo de datos definido, y dentro de este subtítulo de datos hay un HTML que necesita cargar un cuadro de diálogo modal.¿Hay alguna manera de pasar una función de inicialización a una presentación de diapositivas de Orbit?

Si está utilizando Foundation, inmediatamente piensa en utilizar la biblioteca Reveal para mostrar un diálogo modal, y lo haría, pero los requisitos requieren el uso de prettyPhoto. (. Esos son los requisitos) Bueno, el problema es que los elementos de la técnica de subtítulos no se ven afectados por la llamada de inicialización original a:

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

Lo que necesito hacer es asegurarse de inicializar cada dato -caption como está cargado. Bueno, aquí está el problema. He resuelto esto para las transiciones de diapositivas mediante el uso del evento afterSlideChange, pero el problema es la primera diapositiva. Necesito llamar a este método para la primera diapositiva que se muestra.

Aquí está el código que resuelve este 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> 

¿Hay una mejor manera de hacer esto sin tener que duplicar ese código. ¿Debo definir un evento de "initializeSlide", o hay alguna respuesta que me falta?

+0

¿Obtuviste una solución para esto? –

Respuesta

3

El control deslizante Órbita no expone tantos métodos. Afortunadamente, hay algunas soluciones simples.

Por ejemplo, podría configurar de esta manera:

$(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

Mi pregunta original era http://stackoverflow.com/questions/16720069/how-to-get-the-callback-of-onload-event-for-orbit-slider-of-foundation-zurb-fram. Elegí comenzar una recompensa aquí ya que parecía similar y necesitaba esperar dos días para comenzar con mi pregunta. ¿Podrías echarle un vistazo a mi pregunta original? Intenté aplicar lo que me dijiste pero no pude solucionarlo. Parece que me estoy perdiendo algo. Muchas gracias por ayudar. –

1

aquí creo que se puede utilizar el evento de carga de 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, Tienes razón, como Orbit, como dependiente de jQuery ..:) – MarmiK

+0

@MarmiK no te consiguió –

+0

Su Orbit Framework se basa en jQuery, no se ejecutará sin jQuery ... es uno de dependencia ... ORbit también está usando jQuery solamente ... :) – MarmiK

0

Está utilizando Después de diapositivas Cambio

referirse órbita de documentation

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

Entonces esta llamada vaciará la función y tendrá que llamarla una y otra vez ...

Ahora, mi pregunta es por qué lo hace, ¿por algún motivo en particular? Si no, simplemente quítelo.

y según mi percepción respuesta de Rohit anterior hará el resto ...

espero que esto va a hacer :)

0

Con la actualización a la Fundación 4 ahora hay un evento orbit:ready. El evento se dispara cuando se carga el control deslizante.

Cuestiones relacionadas