2011-12-28 101 views
0

我在这里有点麻烦。要安装的fancybox我得到这个JavaScript错误:fancybox麻烦:undefined不是函数

'undefined' is not a function (evaluating '$("a.fancybox").fancybox()') 

这里是我的HTML

<a href="http://localhost/vm/wp-content/gallery/txt/l2.jpg" class="fancybox"> 
<img src="http://localhost/vm/wp-content/gallery/testando/thumbs/thumbs_l2.jpg"> 
</a> 

和我的javascript

<script type="text/javascript"> 
$(document).ready(function() { 
    $("a.fancybox").fancybox(); 
}); 
</script> 

有没有人遇到这个问题?

谢谢!

+0

第一个想法是脚本的整体设置。你是“试图安装fancybox”,显然你还没有成功,你的HTML + Javascript(这是正确的)是证明:) – thmshd 2011-12-28 12:37:46

+0

但在其他页面工作正常与相同的脚本!但在这一个图像是使用PHP foreach函数生成的。 – 2011-12-28 12:40:05

+0

我已经删除了'syntax-error'标记,因为错误不是语法错误(实际上它是一个引用错误)。如果你需要一个答案,你应该显示你的整个页面的生成内容,要么是内联(如果代码不是太大),要么通过链接,要么在[fiddle](http://jsfiddle.net)或[ jsbin](http://jsbin.com)。 – 2011-12-28 12:42:29

回答

1

我假设您正在使用fancybox v1.3.x,因为该版本无法在Fancybox中显示动态添加的元素(FYI Fancybox v2.x可以处理现有的和动态添加的元素)。

如果您不希望升级到的fancybox V2.X那么你有两个选择:

  1. 使用了jQuery的liveQuery插件 或
  2. 重建你的脚本,并使用jQuery delegate()触发的fancybox与新元素

这两个选项都解释为here

请注意,使用jQuery delegate()解决方案不适用于Fancybox图库,仅适用于单个元素。

如果你不想使用的liveQuery插件,并仍想使用动态添加元素的fancybox的画廊,或者你可以升级到jQuery的1.7+并使用新的API jQuery on()

我有一个demo page here这演示如何在()上使用jQuery显示具有现有和动态添加元素的Fancybox图库。请随时查看源代码。

+0

刚换了fancybox 2.0,效果不错!谢谢你的提示 ! – 2011-12-29 15:43:28

2

当页面有两个jQuery副本时,我遇到了类似的问题。所以,确保你的页面上只有一个jQuery副本。

发生了什么事情是Fancybox从jQuery的第一个副本扩展自己;但由于第二个副本,准备好的文档仅从该副本中调用。当然Fancybox不适用于它。

+0

那也是!另一个插件调用jQuery然后fancybox没有工作。谢谢你的提示! – 2012-01-20 16:00:04