2011-05-27 10 views
5

Estoy usando fancybox para mostrar algunas imágenes en una galería. Tengo una imagen principal y un montón de miniaturas debajo. Si hace clic en la imagen principal, debe mostrar el cuadro de fantasía, pero si hace clic en una miniatura, reemplaza la imagen principal. Conecté la imagen principal cambiando a otra parte, pero mi problema es que quiero evitar que se muestre Fancybox cuando se hace clic en una miniatura. Tengo este código:

$(this).fancybox({ 
    onStart: function(selectedArray, selectedIndex, selectedOpts) { 
      var element = selectedArray[selectedIndex]; 
      if ($(element).parent('li').length > 0) { 
       $.fancybox.cancel(); 
       $.fancybox.close(); 
       $(element).click(); 
      } 
     } 
    }); 
}); 

pero la cancelación y el cierre no funcionan. No me sorprendería si close() es superflua asumiendo cancelar() funciona ...

gracias

robb

editar: Aquí es algo de HTML para la imagen principal:

<a href="/uploadedImages/About_Something/Carousel/Landing_mainImage.png" id="ctl00_ContentPlaceHolder1_aMainImage" class="fancyBox" rel="gallery"> 
    <img id="ctl00_ContentPlaceHolder1_imgMainImage" src="/uploadedImages/About_Something/Carousel/Landing_mainImage.png" alt="1" style="border-width:0px;" /> 
</a> 

y aquí es uno de los elementos en miniatura:

<a href="/uploadedImages/About_Something/Carousel/Landing_mainImage_2.png" class="fancyBox" rel="gallery"> 
    <img src="/uploadedImages/About_Something/Carousel/Landing_mainImage.png " alt="/uploadedImages/About_Something/Carousel/Landing_mainImage.png " /> 
</a> 

y luego más de la mirada Javascript s como este:

$('a.fancyBox').each(function(i) { 
    if ($(this).parent('li').length > 0) { 
     $(this).click(function(e) { 
      e.preventDefault(); 
     }); 
    } 

    $(this).fancybox({ 
     onStart: function(selectedArray, selectedIndex, selectedOpts) { 
      var element = selectedArray[selectedIndex]; 
      if ($(element).parent('li').length > 0) { 
       $.fancybox.cancel(); 
       $.fancybox.close(); 
       $('#fancy_close').trigger('click'); 
       $(element).click(); 
      } 
     } 
    }); 
}); 
+0

¿Podría publicar más html/js para la imagen principal y las miniaturas? – mrk

Respuesta

8

me dio la misma edición.

Simplemente devuelva falso en onStart y cancelará la carga.

0

Prueba esto:

$.fn.fancybox.close(); 

O esto:

$('#fancy_close').trigger('click'); 
+0

Desafortunadamente no hay dados ... Si hago $ .fancybox.close(); en la consola funciona y el método no existe en fn ... En cuanto a $ ('# fancy_close'). trigger ('click'), eso tampoco funciona ... –

+0

Ok, ¿podrías mostrar algo HTML para reproducir el problema exacto? – silex