我正在开发一些嵌入其他网站的JavaScript(比如Google Analytics或AdSense)。有一些核心JS正在完成 - AJAX请求,动画,JSON(P)。
我使用jQuery编写原型,并且真的想继续使用它,但如果它们也安装了jQuery,这可能会在嵌入其他站点时引起问题 - 甚至可能是不同的版本。
这有什么好办法吗?到目前为止,我得到的最佳解决方案是简单地将所有jQuery
替换为kQuery
,将$
替换为$kQuery
,这样就不存在命名冲突。有什么建议?如何与现有的JavaScript尽可能兼容?
答案 0 :(得分:3)
jQuery有noConflict
模式;这就是你所需要的。 jQuery在覆盖它们之前将window.jQuery
和window.$
的原始值保存为本地副本。
所以,解决方案是:
var kQuery = $kQuery = $.noConflict( true );
用原始值替换window.jQuery
和window.$
并返回对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