2011-09-16 95 views
1

我刚开始尝试学习JS,所以如果这看起来像一个愚蠢的问题,但我有点失落道歉。我有一组图像,我刮掉了我的Flickr页面,我决定添加一个灯箱以尝试获得JS的一些体验,所以我已经从the GitHub page安装了它,然后按照说明添加到application.js中:Rails 3&FancyBox

//= require jquery 
//= require fancybox 

,并添加到我的custom.css:

/* 
*= require_self 
*= require fancybox 
*= require_tree . 
*/ 

我那么有:

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

/* This is basic - uses default settings */ 

$("a.flickr_photo").fancybox({'type': 'image'}); 

}); 
</script> 

在部分,要求在其上创建一组图片:

<%= link_to(image_tag(p.url, :class => 'flickr_photo', :title => p.title, :border => 0), p.url_photopage) %> 

现在我只是有点卡住了,它并没有真正做任何事情,但它也没有错误,所以任何帮助都会非常棒!

回答

1

您可能在Prototype的$标识符上发生冲突(我假设您没有摆脱标准的RoR原型代码)。 Prototype是一个类似于jQuery的Javascript库,与RoR捆绑在一起。问题是,它也使用$,就像jQuery一样,所以最终发生的每一个$都会作为原型函数或变量尝试使用。这是我的固定它在我的应用程序,它使用一个jQuery滑块一些图片:

  • 在将领先于其他jQuery代码加载的地方添加jQuery.noConflict();,但实际的jquery.js文件之后。看看你的哪个jQuery文件首先被加载,然后放在文件的开头。
  • 接下来,您必须将使用$更改为使用jQuery的所有jQuery代码。在您最喜欢的文本编辑器中查找/替换您的jQuery .js文件来完成此操作。
  • 确保未来所有的jQuery代码使用jQuery,而不是$(的即jQuery("#id_of_element").show();代替$("#id_of_element").show();

正如你可以大概判断出,这种改变来自$jQuery jQuery的标识符,它摆脱的来自Prototype的冲突。如果我的诊断是正确的,那就应该解决你的问题!

+0

你是对的,原型的东西是造成冲突,一旦我省去了它,一切都变得更流畅,获得的赏金! –