链接应该在click函数的帮助下打开fancybox($ .fancybox.pos)

时间:2011-11-25 17:55:46

标签: javascript jquery click fancybox

我想要一个用特定图片打开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 个答案:

答案 0 :(得分: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>

我需要几个小时来解决这个问题!

答案 1 :(得分:0)

使用匿名函数:

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

我不确定currentImage是什么。


尝试此代码:

var currentImage = 0;

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