1

我正在开发一些将嵌入其他网站的 JavaScript(比如 Google Analytics 或 AdSense)。有一些核心 JS 正在完成——AJAX 请求、动画、JSON(P)。

我已经使用 jQuery 编写了原型,并且真的想继续使用它,但是如果其他站点也安装了 jQuery,这可能会在嵌入到其他站点时导致问题——甚至可能是不同的版本。

有没有一个很好的方法来解决这个问题?到目前为止,我得到的最佳解决方案是简单地替换所有出现的jQuerywithkQuery$with $kQuery,因此不存在命名冲突。有什么建议么?我怎样才能尽可能地与他们现有的 JavaScript 兼容?

4

2 回答 2

3

jQuery有一个noConflict模式;这就是你需要的。jQuery在覆盖之前将window.jQuery和的原始值保存为本地副本。window.$

所以,一个解决方案是:

var kQuery = $kQuery = $.noConflict( true );

它用原始值替换window.jQueryandwindow.$并返回对 jQuery 本身的引用


如果您根本不想更改代码,只需将其包装在:

(function( $ ){
   // Your code with $
})( $.noConflict( true ) );
于 2010-10-25T12:35:16.217 回答
0
 this might cause a problem when embedded on the other sites if they also have jQuery installed -- probably even a different version

我不认为这是真的。我在至少 3 个不同版本的 jQuery 之间切换没有问题,它 向后兼容

于 2010-10-25T12:34:24.010 回答