Jquery Fancybox:未传递数组变量

Jquery Fancybox:未传递数组变量,jquery,fancybox,Jquery,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(', ')+'

似乎无法让这一切发生

$(".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 url(pics),它会工作。 但当我将变量(pics)传递给fancybox时,我得到了fancybox错误: -无法加载请求的内容。-请稍后再试-

有人能告诉我我做错了什么吗

提前感谢。

您可以这样做:

  • 创建显示属性设置为“无”的容器div(显示:无)
  • 在该容器内放置de img标签
  • 调用函数trigger click event时,单击div内部的任意图像
  • 例如:

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

    您的代码没有任何问题,但有一些问题您没有考虑:

    您的声明
    var pics='['+pic.join(',')+']正在返回fancybox无法分析的字符串

    您需要做的是将这样的字符串转换为javascript
    对象
    ,以便fancybox能够解析它。有不同的方法可以做到这一点。一种是使用
    eval()
    函数,但可能存在安全问题,因此不建议使用此方法

    因为您使用的是jQuery,所以最安全的方法是使用

    。。。所以就在设置变量的那一行之后

    var pics = '['+ pic.join(', ')+']';
    
    添加此项以将其转换为js对象

    pics = jQuery.parseJSON(pics);
    

    这应该就够了。

    $.fancybox(图片
    我在fancybox网站上找不到类似的语法。你从哪里得到的语法?fancybox有两个完全不同的版本,每个版本都有自己的网站。你在使用哪一个?我使用fancybox 1.3。4@Vega-这是我放在一起的东西。但它应该有用…(?)你必须创建一个数组(包含对象或字符串),但你已经创建了一个stringYeah,这会起作用,但我正在尝试让它起作用。但是如果我不能,我可能会这样做。无论如何,谢谢你。你做到了!JFK,u da Man!!唯一需要做的就是在数组值中添加双引号:[代码]pic.push('\“'+'+'+$(this.attr('href')+'\'”);就是这样。谢谢JFK.pic.push('\“'+'localhost';+$(this.attr('href')+'\');“啊。我无法正确突出显示代码。哦,好吧。使用组合键ALT+096(数字键盘)在代码的开头和结尾处显示“严重重音”。
    pics = jQuery.parseJSON(pics);