2009-08-14 3 views
3

Ich versuche, fancybox so anpassen, dass, wenn eines der 4 Bilder auf der Seite angezeigt wird, dies ist derjenige, der im Fancybox-Fenster geladen wird.Aufruf fancybox mit jquery. Klick-Funktion

Um dies zu tun möchte ich die jquery .attr Funktion verwenden, um das Bild src (als Variable) an den Hauptbildhalter übergeben.

Mein aktueller Jquery-Code ist:

jQuery(document).ready(function($) { 

     $("a.group").click(function() { 
      var image = $(this).attr("name");  
      $("#largeId").attr({ src: image}); 
      $("a.group").fancybox({ 
         'frameWidth':966, 
         'frameHeight': 547, 
         'hideOnContentClick': false, 
         'overlayOpacity': 0.85, 
         'callbackOnShow': function() { 
            $("#container ul#thumbnails li a").click(function(){ 
            var largePath = $(this).attr("title"); 
            $("#largeId").fadeOut("fast").hide(); 
            $("#largeId").attr({ src: largePath }); 
            $("#largeId").fadeIn("slow");return false; 
          }); 
         $("#container ul#thumbnails li a").click(function(){ 
         $('.active').removeClass('active'); 
         $(this).addClass("active"); 
          }); 
         } 
     }); 

    }); 
}); 

Der HTML-Code für die Haupt-Seite: Bild

<ul id="images"> 

<li><a id="one_image" class="group" href="#hidden" title="images/1_large.jpg"><img src="Images/1.jpg" alt="MOMA NY #1" title="MOMA NY #1" /></a></li> 
<li><a class="group" href="#hidden" title="images/2_large.jpg"><img src="Images/2.jpg" alt="MOMA NY #2" title="MOMA NY #2" /></a></li> 
<li><a class="group" href="#hidden" title="images/3_large.jpg"><img src="Images/3.jpg" alt="MOMA NY #3" title="MOMA NY #3" /></a></li> 
<li><a class="group" href="#hidden" title="images/4_large.jpg"><img src="Images/4.jpg" alt="MOMA NY #4" title="MOMA NY #4" /></a></li> 

</ul> 

Für das Fancybox Fenster:

<div id="main_image"> 

<img id="largeId" src="" alt="" title="" /> 

</div> 

----- --EDIT ----------

nur damit du weißt, das funktioniert meistens, wenn ich die click-funktion am anfang loslasse, funktionieren die funktionen im fancybox call einwandfrei.

Antwort

4

Ich denke, es wird übermäßig kompliziert.

jQuery(document).ready(function($) { 
     $("a.group").fancybox({ 
       'frameWidth': 300, 
       'frameHeight': 300 
       }); 

    }); 

Das sollte das ganze Javascript sein, das Sie brauchen. Dann sollten Sie den Titel und die Gruppierung auf das a-Tag verschieben.

<ul id="images"> 
    <li><a class="group" rel="group" href="images/2_large.jpg" title="MOMA NY #1"><img src="Images/3.jpg" alt="MOMA NY #1"/></a></li> 
    <li><a class="group" rel="group" href="images/1_large.jpg" title="MOMA NY #2" ><img src="Images/3.jpg" alt="MOMA NY #2"/></a></li> 
    <li><a class="group" rel="group" href="images/3_large.jpg" title="MOMA NY #3" ><img src="Images/3.jpg" alt="MOMA NY #3"/></a></li> 
    <li><a class="group" rel="group" href="images/4_large.jpg" title="MOMA NY #4" ><img src="Images/4.jpg" alt="MOMA NY #4"/></a></li> 
</ul> 

Haben Sie das gesucht?

+0

Nicht wirklich! Ich brauche den Rest der Elemente in der Fancybox-Funktion, um die Fenstergröße zu steuern und die Funktion aufzurufen, um innerhalb des modalen Fensters zu arbeiten. – DanC

+0

Ich bin mir ziemlich sicher, dass Sie all das in den GET-Parametern der URL kontrollieren können. Ich habe ein Beispiel in das obige eingefügt. – Jesta

1

Ich habe fancybox noch nie benutzt, aber von gerade an Ihrem Code suchen, denke ich, die Linie, die fancybox von

fixiert werden Anrufe benötigt
$("a.group").fancybox({ 

dazu:

$(this).fancybox({ 

Entschuldigung Ich habe das nicht getestet ... aber ich glaube, das war dein Problem.

1

Einige könnten dies nützlich finden, wenn Sie ein Attribut des Links benötigen, auf den geklickt wird.

//html: 
<a href="#popup" id="lnk_0">Create a new product w/ this image</a> 
<div style="display:none;"><div id="popup"><h1>This is popup text.</h1></div></div> 

//jquery: 
$("a[href='#popup']").fancybox({ 
    'onStart': function(selectedArray, selectedIndex, selectedOpts) 
    { 
    alert(selectedOpts.orig.attr('id')); 
    } 
}); 
0

Hinweis: Dies ist ein alter Thread, aber nur um zu klären, ob ein Klick rufen Sie verwenden Sie sollten nicht mehr als $ (this) verwenden, da es einen Doppelklick benötigen.

$(function() { 
    $("myelement").click(function() { 
    $.fancybox(); 
    }); 
}); 
0
<a style="display: none;" href="#fancy-box" class="fancybox-inline" id="fancybox-trigger"></a> 



<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#fancybox-trigger").trigger('click'); 
    }); 
</script>