2011-08-29 98 views
0

我想显示一个Fancybox画廊与数据,通过JSON加载。加载并追加新的HTML后,我可以正确加载Fancybox。但是,当我连接rel =“somegroup”时,图库功能不起作用,我无法遍历Fancybox中的一组图像。Fancybox画廊与jQuery的.live()

这里是我的fancybox电话:

$('.fancyness').live('click', function(){ 
     $.fancybox(this, { 
      'width'   : 'auto', 
      'height'  : 'auto', 
      'titleShow'  : true, 
      'titlePosition' : 'over' 
     }); 
     return false; 
    }); 

这里是什么图片看起来像:

html += '<li><a class="fancyness" rel="group" href="' + full + '" title="'+ title +'">'; 
html += '<img title="' + item.title + '" src="' + thumbnail + '" alt="' + item.title + '" /></a></li>'; 

如果我不使用.live画廊(REL)功能将正常工作,但而不是这个数据,因为这是用JSON加载的。

有没有人有任何想法?我没有多少运气找到有类似问题的其他人。

谢谢。

+0

'$( 'A [相对=基]')的fancybox({' - 。改变的fancybox到这允许组来打开,然而,它增加了相同的图像到最后一个索引处的组中的图像列表,所以图像在那里两次。有没有办法绕过额外的图像? – Anna

回答

5

我有类似的问题。如果你有兴趣,我发现了一些看起来很有希望的东西over here。那里似乎最适用的解决方案是编辑fancybox代码,用.live替换.bind。不过,我无法为图像库工作。另一个建议(评论14)确实有效(并且不需要任何与fanybox混淆)。尝试,

$("a.fancyness").live("mouseover focus", function() { 
    $("a.fancyness").fancybox({ 
     'width'   : 'auto', 
     'height'  : 'auto', 
     'titleShow'  : true, 
     'titlePosition' : 'over' 
    }); 
}); 

如果你看一下从链接注释14,你会注意到的是这里的第二个选择是简单地在评论$(this)。这对单张图片来说很好,但是如果您使用的是图库,您希望fancybox在全部上启动,而不仅仅是鼠标悬停然后单击的图片(仅供参考,我还包括焦点事件,所以如果您在缩略图上键盘标签并按回车键,图片库仍然会打开)。

如果您将"mouseover focus"替换为"click",您会发现单击拇指只会触发fancybox插件。然后,您需要再次单击才能实际启动您的画廊 - 因此需要点击"mouseover focus"事件。

+0

我想你可能已经自己解决了这个问题,或者解决了它的问题现在如果是这样的话,我希望这可以帮助其他人解决同样的问题,就像我做的那样。 – Sam

+0

这是行得通的!我喜欢这个修补程序比我上面做的更好。为什么我在我原始帖子的评论中提到了额外的图像。这次真是万分感谢! :) – Anna

+0

好兄弟 – jack

5

令我很烦恼如何在上述方案中的fancybox功能将每次你将鼠标移到一些的fancybox元素时触发的,所以我写了这一点,这工作,但不会触发任何东西,除非你点击它。

jQuery(document).on('click','.fancybox',function(e){ 
    e.preventDefault();//don't follow link 
    jQuery('.fancybox').fancybox();//update fancybox image registry with ALL loaded images 
    jQuery(this).trigger('click.fb');//trigger click and fancybox popup 
}); 

为旧的jQuery

jQuery(document).click(function(e){ 
    var self = jQuery(e.target); 
    if(self.is('.fancybox')){ 
     e.preventDefault();//don't follow link 
     jQuery('.fancybox').fancybox();//update fancybox image registry with ALL loaded images 
     self.trigger('click.fb');//trigger click and fancybox popup 
    } 
}); 
+0

jQuery('。fancybox')。fancybox() - 更新FB的注册表。 – BasTaller

+0

太棒了!现在用新的'on'事件处理器替换折旧的'live'(从jquery 1.7开始)jQuery(document).on('click','.fancybox',function(e){..