我在我的应用程序中同时使用 jQuery 和 Prototype 库(由于 3rd 方插件而被迫这样做)。
这两个库都使用“$”作为它们的核心功能。我知道如何将 jQuery 上的 $ 更改为其他内容以避免冲突。但是我更喜欢更改 Prototype $ 函数,因为我的大部分代码都使用 jQuery。
有没有办法做到这一点?
两个库都加载后,有没有人尝试过这样的事情?
<script>
// using Prototype.js
Event.observe(window, 'load', function () {
window._ = window.$; // assign $ to _
window.$ = jQuery; // re-assign $ to jQuery
});
// or using jQuery
/*
jQuery(document).ready(function () {
window._ = window.$; // assign $ to _
window.$ = jQuery; // re-assign $ to jQuery
});
*/
</script>
这应该把 Prototype.js_
和 jQuery 放在$
.
如果做不到这一点,这个IIFE模式应该允许您将 $ 用于 jQuery(和 Prototype):
<script>
// do Prototype.js stuff using $
(function ($) {
$('#myElem').addClassName('hidden').insert('Prototype added class "hidden" so now you cannot see me!);
}(window.$));
// do jQuery things using $
(function ($) {
$('#myElem').removeClass('hidden').append($('<p />').text('jQuery removed class "hidden" so now you can see me!));
}(jQuery.noConflict()));
</script>
您必须在 jQuery 中使用非冲突。
然后将 $ 更改为其他内容。然后你可以将 $ 更改为 jQuery。
$p = $;
$ = jQuery;