jQuery和prototype.js冲突,如何将jQuery保持为$?

所以我正在开发一个同时使用jQuery和prototype.js的网站,但是它们存在冲突。

我研究了一下,发现人们解决这个问题的唯一方法是使用

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

但是我不想将$更改为jQuery,因为这意味着我必须编辑一些预先编写的代码。 有没有办法阻止它们冲突并将jQuery保留为$?

您可以创建一个闭包(在body的末尾),而不是使用文档就绪:

 (function($) { //jQuery stuff $('.elem') // $ refers to jQuery })(jQuery); 

如果我理解你的问题

不,不是我听说过的。 为了尽量减少代码转换的痛苦,你可以做到这样的事情:

 var j$ = jQuery.noConflict(); 

然后你可以用j$替换jQuery $调用。 您甚至可以使用简单的搜索/替换呼叫。

 ( function($){ // $('jquery here') })(jQuery); 

函数内的所有jquery代码都可以使用$

有一种简单的方法可以通过将已经编写好的代码包装到函数中并将jQuery传递给它来实现。 这样你就可以保留你已经编写好的代码并使用jQuery作为新标识符:

 (my_old_stuff = function($){ $.my_existing_function(){ alert('i allready exist'); }; )(jQuery); jQuery.my_existing_function(); 

这应该工作。

另一方面:用jQuery替换$似乎不是自动替换的任务。

虽然这是一个很老的post,但我确实遇到了同样的问题。 有很多选项可以处理它。 我不会触及预先编写的代码并让原型j使用$。

来自jQuery文档

     

以下是所有可用选项。

https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/