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/