我的应用程序使用prototype.js已经有一段时间了。我现在尝试使用 jQuery 和 jquery 插件来实现一些增强的功能。然而,prototype.js 和 jQuery 在使用“$”变量时产生了冲突。这当然可以通过 jQuery 提供的 noConflict() 方法来解决,因此我可以将 jQuery 快捷方式更改为我想要的。问题是如何使用我想要导入的 jQuery 插件。当然有比查找并替换所有“$”变量更好的方法。
正在使用的插件是“Selectize”https://github.com/brianreavis/selectize.js
最佳答案
您已将问题编辑为:
The plugin being used is 'Selectize' https://github.com/brianreavis/selectize.js
该插件根本不依赖于全局 $
符号;您无需执行任何操作即可使插件与使用 $
进行其他操作(例如 Prototype)的网站兼容。该插件仅依赖于 jQuery
符号。 (它在内部使用 $
,但仅作为局部变量;它不使用全局变量。)任何正确编写的 jQuery 插件都会避免使用全局 $
,因为这个问题。
要在您的网站上使用它,您需要执行以下操作:
<script src="/path/to/prototype.js"></script>
<script src="/path/to/jquery.js"></script>
<script src="/path/to/your/code.js></script>
...您的代码可能如下所示:
(function() {
var $j = jQuery.noConflict();
$j("some-selector").pluginMethod(); // jQuery
$("some-id").addClassName("foo"); // Prototype
})();
(您不需要那里的包装函数,它只是为了避免创建 $j
全局)。
或者只是:
jQuery.noConflict();
jQuery("some-selector").pluginMethod(); // jQuery
$("some-id").addClassName("foo"); // Prototype
关于jquery - Prototype.js 与 jquery 插件冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264680/