JS嵌入在其他网站上 - 如何在不搞砸其他jQuery安装的情况下使用jQuery?

时间:2010-10-25 12:27:01

标签: javascript jquery conflicting-libraries

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

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

这有什么好办法吗?到目前为止,我得到的最佳解决方案是简单地将所有jQuery替换为kQuery,将$替换为$kQuery,这样就不存在命名冲突。有什么建议?如何与现有的JavaScript尽可能兼容?

2 个答案:

答案 0 :(得分:3)

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

所以,解决方案是:

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

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


如果你根本不想改变你的代码,只需将其包装成:

(function( $ ){
   // Your code with $
})( $.noConflict( true ) );

答案 1 :(得分: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之间切换没有问题,它是backwards compatible