jquery - Prototype.js 与 jquery 插件冲突

标签 jquery prototypejs selectize.js

我的应用程序使用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/

相关文章:

javascript - Angular Selectize - 绑定(bind)到模型(不是值)

javascript - 动态升级/替换原型(prototype)库

javascript - 在 Prototype 中绑定(bind)和触发 native 和自定义事件

javascript - 如何使用 selectize.js 获取选定的 id 和文本值。 meteor ?

javascript - 查找动态加载的 HTML 页面的标题

javascript - 在 JS 中获取元素标签名称的最佳方法是什么?

javascript - 销毁 Selectize.js 实例

javascript - 如何将文本框中的聊天消息显示到div

javascript - 发送 AJAX 请求的属性列表上的正则表达式标志 b 无效

javascript - 在 iframe 中更改 css 属性