那么,使用jQuery,您可以使用$ .noConflict()函数从全局命名空间中删除'$'和'jQuery'变量,以防止页面的其他部分使用其他版本的jQuery或另一个声明'$'变量的库。
这里有一个简单的例子...
<script src="/path/to/jquery.min.js" type="text/javascript"></script>
<!-- load plugins you require here -->
<script type="text/javascript">
var myUniquelyNamedVar = {};
myUniquelyNamedVar.jQuery = $.noConflict(true); // de-aliases jQuery, but gives you a private reference (if you need it)
(function($) {
// use an anonymous function and pass in your private jQuery instance; inside this function you can use $ like normal...
})(myUniquelyNamedVar.jQuery);
</script>
我已经使用JSR-168 portlet的这一做法,并取得了巨大成功。它允许我在页面上有几个portlet,每个portlet可以使用不同版本的jQuery或不同的插件。
我很好奇人们对此有何评论。框架不可知的吧.. +1 – Perpetualcoder 2010-01-11 22:46:54
你可以看看ExtJs是如何做到的。看看src \ adapter,他们对yui,prototype,jquery或其本地lib有一些基本dom的东西有自己的抽象。 – 2010-01-11 22:55:26
谢谢罗兰B.你的评论是最有用的。糟糕的是没有关于它的文章,转换本身也被用在图书馆中。 – jerone 2010-01-12 08:03:08