如何让jQuery与Prototype一起使用

好的,这就是情况。 一直把我的头发拉出来。

我是个菜鸟。 仅使用导轨约6周。 我正在使用标准安装程序包,我的代码大量使用原型帮助程序。 就像我说的那样,noob;)

所以我想尝试一些jQuery效果,比如PrettyPhoto。 但是,当首次加载页面时,PrettyPhoto的效果很好。 但是,一旦有人使用Prototype助手,比如使用link_to_remote创建的链接,Prettyphoto就会停止工作。

我试过jRails,JQuery网站上提出的所有修复都可以阻止冲突……

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

…甚至做了一些疯狂的事情,比如将prototype.js中的所有$重命名为$$$无济于事。 原型助手破坏,或jQuery破坏。

似乎我所做的一切都不能让它们一起工作。

有任何想法吗?

这是我的application.html.erb的一部分

          jQuery(document).ready( function() { jQuery("a[rel^='prettyPhoto']").prettyPhoto(); });  

如果我在jquery之前放置原型,那么原型助手不起作用如果我把noconflict子句放进去,那么它们都不起作用。

提前致谢!

克里斯

BTW:当我尝试这个时,从jQuery网站:

  jQuery.noConflict(); // Use jQuery via jQuery(...) jQuery(document).ready(function(){ jQuery("div").hide(); }); // Use Prototype with $(...), etc. $('someid').hide();  

我的页面消失了!

你应该使用jQuery.noConflict(); 在此之后,所有对jquery的调用都应该只使用jQuery()而不是of $()

看起来你几乎就在那里。 我想你想要这样的东西:

 <%= javascript_include_tag 'prototype' %> <%= javascript_include_tag 'scriptalicious' %> <%= javascript_include_tag 'jquery' %> <%= javascript_include_tag 'jquery-ui' %> <%= javascript_include_tag "jquery.prettyPhoto" %> <%= javascript_include_tag 'application' %> <%= javascript_include_tag 'tooltip' %>  

我不确定你在jQuery网站上找到了什么样的例子,但jQuery(“div”)。hide(); 看起来它隐藏了您网页上的所有div,这就是您的网页消失的原因。 没有冲突是你需要的。

重新排序javascript包括如上所述意味着你可以在application.js中包含你的内联JS,有些人会考虑更整洁。

在以下文件中将$ symbol更改 jQuery

 <%= javascript_include_tag 'jquery-ui' %> <%= javascript_include_tag "jquery.prettyPhoto" %> 

首先包括jquery文件然后包含原型。

希望它能解决问题

你可以做很多事情。

其中之一是检查加载JavaScript标记的顺序。 通常,应用程序应该在最后。

如果你使用jrails,你根本不需要加载原型和scriptaculous库。

我谦卑地建议你尝试以下方法:

 <%= javascript_include_tag 'jquery', 'jquery-ui', 'tooltip', 'jquery.prettyPhoto', 'application' %> 

由于您处于开发周期的开始阶段,因此您只能使用jquery库并完全取消原型。 jQuery方面有更多的选择。

我不是说这是每个人都应该做的事情,但在你的具体情况下这似乎是合理的。