2

我在我的应用程序中同时使用 jQuery 和 Prototype 库(由于 3rd 方插件而被迫这样做)。

这两个库都使用“$”作为它们的核心功能。我知道如何将 jQuery 上的 $ 更改为其他内容以避免冲突。但是我更喜欢更改 Prototype $ 函数,因为我的大部分代码都使用 jQuery。

有没有办法做到这一点?

4

2 回答 2

4

两个库都加载后,有没有人尝试过这样的事情?

<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>
于 2013-05-15T20:39:11.270 回答
0

您必须在 jQuery 中使用非冲突。

然后将 $ 更改为其他内容。然后你可以将 $ 更改为 jQuery。

$p = $;
$ = jQuery;
于 2013-05-15T19:36:16.683 回答