2012-04-19 44 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