【问题标题】:Fancybox: Array variable not being passedFancybox:未传递数组变量
【发布时间】:2012-05-01 11:46:11
【问题描述】:

似乎无法做到这一点!

$(".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 ),它就可以工作。 但是当我通过 fancybox 变量(图片)我得到了 fancybox 错误: - 无法加载请求的内容。 - 请稍后再试。 -

谁能告诉我我做错了什么?

提前致谢。

【问题讨论】:

  • $.fancybox(pics 我在fancybox 网站上找不到类似的语法。你从哪里得到的语法?
  • fancyBox 有两个完全不同的版本,每个版本都有自己的网站。你用的是哪一个?
  • 我正在使用 Fancybox 1.3.4
  • @Vega - 这是我放在一起的东西。但它应该工作......(???)
  • 你必须创建一个数组(包含对象或字符串),但是你已经创建了一个字符串

标签: jquery fancybox


【解决方案1】:

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

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

你要做的就是把这样的字符串转换成一个javascriptobject,这样fancybox就可以解析它了。有不同的方法可以做到这一点。一种是使用eval()函数,但可能存在安全问题,不推荐使用此方法。

由于您使用的是 jQuery,因此最安全的方法是使用 jQuery.parseJSON( json )

...所以就在你设置变量pics的那一行之后

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

添加 this 以将其转换为 js 对象

pics = jQuery.parseJSON(pics);

这应该可以解决问题。

【讨论】:

  • 你做到了!肯尼迪,你大爷!!唯一要做的就是在数组值中添加双引号: [code]pic.push('\"' + 'localhost' + $(this).attr('href' ) + '\"' );并且做到了。谢谢肯尼迪。
  • 'pic.push('\"' + 'localhost'; + $(this).attr('href') + '\"' ); '啊。我无法正确突出显示代码。哦,好吧。
  • 使用组合键 ALT + 096(数字小键盘)获取代码开头和结尾的“重音”。
【解决方案2】:

你可以这样做:

  1. 创建一个显示属性设置为无的容器 div (display:none)
  2. 在这个容器内放置 de img 标签
  3. 当您在 div 内的任意图像上调用函数触发器 单击事件

示例:

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

关于js代码: $("#container img").fancybox();

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

【讨论】:

  • 是的,这可行,但我正在努力让它发挥作用。但如果我不能,我可能会那样做。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多