我努力理解在这种情况下使用noConflict有道有道:使用jQuery noConflict
- 我的代码加载一个网页上的小工具,我不控制
- 这网页可以使用已经包含了jQuery和/或其他库比如Prototype $
- 我的窗口小部件需要自己的jQuery的版本(这是我想要加载任何已经加载的页面上)
到目前为止,我小工具ks,但是在加载之后,原始网页被破坏,因为$指向我自己版本的jQuery。
感谢您的帮助!
我努力理解在这种情况下使用noConflict有道有道:使用jQuery noConflict
到目前为止,我小工具ks,但是在加载之后,原始网页被破坏,因为$指向我自己版本的jQuery。
感谢您的帮助!
$.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>
谢谢,很好的回答! – Blacksad 2012-02-13 18:17:48
不客气。很高兴我能帮上忙。 :-) – 2012-02-13 18:20:02
尝试在“您的jQuery版本”加载后立即运行此代码。
$.noConflict();
如果你已经过书面映射到$
以前的图书馆,它不会帮助。但是如果你知道以前的库是什么(并且它不是jQuery),那么你可以使用类似$ = MooTools
的东西将它重新映射到$
。
整个代码会读...
$.noConflict(); // leaves jQuery available using jQuery()
$ = MooTools; // maps the original library (MooTools in this example) back to $
jQuery.noConflict存在过度使用$
变量的删除与其他JavaScript库冲突。它不会帮助你与jQuery版本冲突。使用它的正确方法是增加一个script
标签像这样,加载的jQuery的script
标签后:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
想必你的小部件不会是能够做到这一点(你的问题说,它不无法控制网页),这意味着您必须将此行为记录为您窗口小部件的要求。换句话说,你的widget的用户将不得不为你调用jQuery.noConflict。
有什么问题的代码?你目前的问题太含糊,所以不能在没有更多细节的情况下回答。 – 2012-02-13 17:25:22
你自己的JQuery版本是什么意思?在页面中加载JQuery库两次将不起作用。当两个不同的JS库加载时(例如JQuery和Mootools),将使用JQuery noConflict。为了确保您使用的是JQuery库,您可以通过noConflict()来访问它。 – Imraan 2012-02-13 17:30:41
@Imraan:你可以加载2个不同版本的jQuery。'noConflict'返回jQuery对象,所以你可以将它分配给另一个变量。 – 2012-02-13 17:54:58