2011-11-25 87 views
1

我想要一个按钮,打开fancybox rel-group与某张图片。我不太确定这是否可行,但我会试一试。我的问题是,如果用户点击一个链接,我想执行jQuery。这是我的代码

var js = "jQuery.fancybox.pos("+currentImage+");"; 
// create a new function from the "js" string 
var newclick = new Function(js); 

jQuery("a.enlarge").click(newclick); 

该代码基于this answer。我希望 jQuery.fancybox.pos(2)的作品。但目前我没有得到点击功能的工作。我做错了什么?

编辑:

我的当前设置:

<script type="text/javascript"> 
    var currentImage = 0; 

    function getCurrImage(carousel, state){ 
    currentImage = carousel.first-1; 

    jQuery("a.enlarge").click(function() { 
     alert(currentImage); 
     jQuery.fancybox.pos(currentImage); 
    }); 
    } 

    jQuery.noConflict(); 

    jQuery(document).ready(function() { 
     jQuery('#mycarousel').jcarousel({ 
      scroll:1, 
      'itemLoadCallback': getCurrImage 
     }); 
     jQuery('a[rel=example_group]').fancybox({ 
      'transitionIn': 'none', 
      'transitionOut': 'none' 
     }); 
    }); 
</script> 

jQuery.fancybox.pos(currentImage);不起作用。 currentImage似乎是正确的,但如果按钮被点击4次,警报弹出4次。这意味着:

点击1:currentImage = 0
点击2:currentImage = 1,currentImage = 1
点击3:currentImage = 2,currentImage = 2,currentImage = 2
点击4:currentImage = 3, currentImage = 3,currentImage = 3,currentImage = 3

更新:

新的尝试:

<script type="text/javascript"> 
    var currentImage = 0; 

function openfancy(){ 
    jQuery.fancybox.pos(currentImage); 
} 

    function getCurrImage(carousel, state){ 
    currentImage = carousel.first-1; 

    jQuery("a.enlarge").unbind("click", openfancy); 
    jQuery("a.enlarge").bind("click", openfancy); 
    } 

    jQuery.noConflict(); 

    jQuery(document).ready(function() { 
     jQuery('#mycarousel').jcarousel({ 
      scroll:1, 
      'itemLoadCallback': getCurrImage 
     }); 
     jQuery('a[rel=example_group]').fancybox({ 
      'transitionIn': 'none', 
      'transitionOut': 'none' 
     }); 
    }); 
</script> 

jQuery.fancybox.pos(currentImage);仍然不起作用。有没有机会?也许是因为我在该页面上有多个fancybox?我也试过jQuery('.fancybox').fancybox.pos(currentImage);,但是我收到错误消息,说它不是一个函数。

回答

2

pos功能从来没有工作过。所以我想到了使用点击功能的删除答案。如果用户点击我的链接,它应该模拟点击图库中的图片。

<script type="text/javascript"> 
    var currentImage = 0; 

    function getCurrImage(carousel, state){ 
     currentImage = carousel.first-1; 
    } 

    /*jQuery.noConflict();*/ 

    jQuery(document).ready(function() { 
     jQuery('#fancycarousel').jcarousel({ 
      scroll:1, 
      'itemLoadCallback': getCurrImage 
     }); 
     jQuery('a[rel=example_group]').fancybox({ 
      'transitionIn': 'none', 
      'transitionOut': 'none' 
     }); 
     jQuery('#enlarge').click(function(){ 
      jQuery(".jcarousel-item").eq(currentImage).children("a").click(); 
     }); 
    }); 
</script> 

我需要几个小时才能弄明白这一点!

0

可以使用匿名函数:

jQuery("a.enlarge").click(function() { 
    jQuery.fancybox.pos(currentImage); 
}); 

我不知道什么是currentImage,虽然。


试试这个代码,以及:

var currentImage = 0; 

$('#your_carousel').jcarousel({ 
    itemLoadCallback: function(carousel, state) { 
    currentImage = carousel.first; 
    } 
}); 
+0

我试过了,但没有奏效。 'currentImage'是一个来自当前呈现的jCarousel图像的数字。我的锚看起来像这个''。确定一个'alert'完成这项工作。但是'fancybox.pos'似乎不起作用。你知道如何使用这个功能吗? – testing

+0

看我的编辑。我不会为你编码,所以圆顶研究你自己。 – Blender

+0

我已经有了你发布的代码。我目前的问题是,我还没有发现如何使用'jQuery.fancybox.pos'函数... – testing