2012-04-19 45 views
0

只是不能讓這種情況發生!Fancybox:數組變量未被傳遞

$(".fancy").click(function(event) { 
    event.preventDefault(); 
    var pic = []; 
    $('.room-thumbnail').each(function(index) { 
     pic.push('\'' + 'http://localhost' + $(this).attr('href') + '\''); 
    }); 

    var pics = '['+ pic.join(', ')+']'; 

    console.log(pics); 
    // => ['http://localhost/driver/images/produits/denim/sixthjune-7440/sixthjune-7440.jpg', 'http://localhost/driver/images/produits/denim/sixthjune-7440/sixthjune-7440-back.jpg', 'http://localhost/driver/images/produits/denim/sixthjune-7440/sixthjune-7440-closeup1.jpg', 'http://localhost/driver/images/produits/denim/sixthjune-7440/sixthjune-7440-closeup2.jpg'] 

    $.fancybox(pics, { 
      'transitionIn'  : 'elastic', 
      'transitionOut'  : 'elastic', 
      'overlayColor'  : '#1D1D1D', 
      'type'    : 'image', 
      'cyclic': true 
     }); 
}); 

如果我手動輸入href網址(圖片)它的作品。 但是,當我通過fancybox變量(圖片)我得到fancybox錯誤: - 所請求的內容無法加載。 - 請稍後再試。 -

有人能告訴我我做錯了什麼嗎?

在此先感謝。

+0

'$ .fancybox(pics'我在fancybox網站找不到類似的語法,你從哪裏得到這個語法? – 2012-04-19 21:39:29

+0

fancyBox有兩個完全不同的版本,每個版本都有自己的網站。 ? – Sparky 2012-04-19 21:45:12

+0

我是用戶Fancybox 1.3.4 – Alex7011 2012-04-19 21:51:58

回答

1

沒有什麼不對您的代碼,但沒有,你是不是考慮的東西:

你的聲明var pics = '['+ pic.join(', ')+']';返回一個字符串的fancybox無法解析。

你所要做的是把這樣的轉換成JavaScript object這樣的fancybox可以解析它。有不同的方法來做到這一點。一種是使用eval()函數,但可能存在安全問題,因此不建議使用此方法。

由於您使用jQuery,你最安全的方式做到這一點是使用jQuery.parseJSON(json)

...你設置的行之後如此恰到好處的變量pics

var pics = '['+ pic.join(', ')+']'; 

添加此轉換它到一個js對象

pics = jQuery.parseJSON(pics); 

這應該做的伎倆。

+0

你做到了的人!JFK,你好!唯一需要做的就是在那裏添加雙引號給數組值:[code] pic.push('\''''''''localhost'+ $(this).attr(' href')+'\「');並做到了。謝謝JFK。 – Alex7011 2012-04-20 16:41:06

+0

'pic.push('\「'+'localhost'; + $(this).attr('href')+'\」'); '啊。我無法讓代碼正確突出顯示。好吧。 – Alex7011 2012-04-20 16:48:03

+0

使用組合鍵ALT + 096(數字鍵盤)在代碼的開頭和結尾處獲得「重音符號」。 – JFK 2012-04-20 16:53:06

0

,你可以這樣做:

  1. 創建顯示特性的div容器設置爲none (顯示:無)
  2. 這個容器的地方去裏面的img標籤
  3. 當你調用功能觸發器單擊事件在div內的任何圖像

示例:

<div> 
<img ...></img ...></img ...> 
</div> 

關於js代碼: $(「#container img」)。fancybox();

function call_fancybox(){ 
$("#container img:first").trigger("click"); 
} 
+0

是的,這將工作,但我試圖讓這個工作。但如果我不能,我可能這樣做。謝謝反正。 – Alex7011 2012-04-19 21:55:10