在同一页面上使用不同版本的jQuery

nim*_*cap 2 jquery jquery-selectors

我服务的用户在我提供的页面中包含JS.我正在托管他们所包含的脚本.我的脚本对其内容进行了一些操作.如果我可以使用jQuery,我厌倦了编写自己的DOM操纵器/选择器并浪费时间来完成可以用1行代码完成的工作.

我的服务的一些用户已经在他们的页面上使用jQuery(或Prototype等),所以如果我包含jQuery会有冲突.因为会有版本差异,所以我不想在jQuery存在的情况下使用他们的jQuery选择器,方法.

请记住,我无法控制他们的页面,我如何包含jQuery并避免冲突?

Nic*_*ver 6

简短版:你不能.

包括jQuery两次会导致各种各样的问题,最重要的是它会删除你添加的任何插件/功能.此外,它可能会为他们使用jQuery 带来很多问题...它并没有真正考虑到多个版本的设计.

.noConflict()对抗其他图书馆冲突,但你不必担心$这里,你正在重新定义jQuery对象,就是问题出现地方.例如,它在启动时装配处理程序等,如果它被页面中的另一个版本覆盖......好吧,哦,哦,麻烦很快就会出现.

另一个很好的例子:事件被存储/访问$.data(elem, 'events'),它使用$.cache(在这个页面上打开一个控制台,检查它),这将被重新定义,丢失事件处理程序,以及理智与它:)

  • @nimcap - 你可以*重命名jQuery我想,看看核心的底部:http://github.com/jquery/jquery/blob/master/src/core.js你可以改变`window.jQuery = window .$ = jQuery;`to`window.myQuery = jQuery;`(该行中的`jQuery`是闭包的本地)...我不能保证任何东西,但这可能(可能确实)有一些副作用. (2认同)