我正在开发一个新的JS库。我想将JQuery作为其核心部分。
我的库应该适用于所有类型的网站,所以在这些网站中,JQuery可能已经包含在不同版本中,可能还有一些其他库可能与我库中的JQuery冲突。
jQuery.noConflict();
可能不是一个完整的解决方案,因为它将从全局范围中删除变量。我的图书馆不希望用户更改任何其他设置。
那我怎么能避免这些问题
提前致谢。请不要告诉不要包含JQuery,使用普通的JS:)
答案 0 :(得分:3)
这很简单。
首先加载你喜欢的jQuery,并通过使用,
省略现有jQuery中的任何冲突来获取它的句柄。 $yourJQ = window.jQuery.noConflict(true);
在要使用jQuery的所有函数中,在匿名作用域中使用$ yourJQ。像这样,
(function($){
// external library code
})($yourJQ);
希望这有帮助
答案 1 :(得分:0)
无论您是否从全局范围中移除变量,您都必须执行查找和操作。替换以更改哪个库指向哪个版本的jQuery;因为他们会使用$或jQuery&无论如何,在全球范围内发生冲突。你可以尝试这样的事情:
加载第一个版本的jQuery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
(function(window,$) {
window.jQuery_v1 = $;
})(window,jQuery);
delete jQuery;
</script>
加载第二版jQuery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
(function(window,$) {
window.jQuery_v2 = $;
})(window,jQuery);
delete jQuery;
</script>
使用两个版本的jQuery
<script type="text/javascript">
// this is now one version of jQuery
console.log(jQuery_v1);
// this is now another version of jQuery
console.log(jQuery_v2);
</script>