我正在努力理解在这种情况下使用noConflict的正确方法:
到目前为止我的小部件工作,但在加载后,原始网页被破坏,因为$指向我自己的jQuery版本。
感谢您的帮助!
答案 0 :(得分:3)
$.noConflict()
将$
重置为加载jQuery之前的任何内容。
<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$.noConflict();
// Code that uses other library's $ can follow here.
</script>
它也可以用来命名jQuery别的东西(因为它在重置$
变量后返回jQuery)。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$jq = $.noConflict();
// jQuery is now `$jq` instead of `$`
</script>
所以你可以做的是使用$
作为当前的jQuery,$jq
作为你的版本。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="your_jquery.js"></script>
<script type="text/javascript">
$jq = $.noConflict();
// Your jQuery is `$jq`, and the original jQuery is `$`
</script>
答案 1 :(得分:0)
尝试在加载“你的jQuery版本”后立即运行此代码。
$.noConflict();
如果您已经覆盖了映射到$
的先前库,那么它将无济于事。但是如果您知道以前的库是什么(并且它不是jQuery),您可以使用类似$
的内容将其重新映射到$ = MooTools
。
整个代码会读......
$.noConflict(); // leaves jQuery available using jQuery()
$ = MooTools; // maps the original library (MooTools in this example) back to $
答案 2 :(得分:0)
jQuery.noConflict用于在使用$
变量时删除与其他JavaScript库的冲突。它不会帮助你解决jQuery版本冲突。使用它的正确方法是在加载jQuery的script
标记后添加script
标记,如下所示:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
据推测,您的窗口小部件无法做到这一点(您的问题表明它无法控制网页),这意味着您必须将此行为记录为窗口小部件的要求。换句话说,您的小部件的用户将不得不为您调用jQuery.noConflict。