2011-11-25 59 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