使用jquery .click函数调用fancybox

时间:2009-08-14 15:42:01

标签: javascript jquery html jquery-plugins fancybox

我正在尝试自定义fancybox,以便在单击页面上显示的4个图像中的一个时,这是在fancybox窗口中加载的图像。

为此,我想使用jquery .attr函数将图像src(作为变量)传递给主图像持有者。

我当前的jquery代码是:

    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");
                            });
                      }
         });

    });
});

主页图像的HTML是:

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

对于Fancybox窗口:

<div id="main_image">

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

</div>

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

只是你知道,如果我在开始时摆脱点击功能,这个功能大部分都有效,fancybox中的功能调用一切正常。

4 个答案:

答案 0 :(得分:4)

我认为它变得过于复杂。

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

    });

这应该是你需要的所有JavaScript。然后你应该将标题和分组移动到标签上。

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

那是你在找什么?

答案 1 :(得分:1)

我之前从未使用过fancybox,但仅仅看一下你的代码,我认为调用fancybox的行需要修复

$("a.group").fancybox({

到此:

$(this).fancybox({

抱歉,我没有测试过这个...但我相信那是你的问题。

答案 2 :(得分:1)

当您需要点击链接的属性时,有些人可能会觉得这很有用。

//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'));
   }
});

答案 3 :(得分:0)

注意:这是一个旧线程,但只是为了澄清是否使用点击通话你不应该使用$(this),因为它需要双击。

$(function() {
   $("myelement").click(function() {
    $.fancybox();
  });
});