小编典典

如何实现JQuery.noConflict()?

javascript

我在同一HTML页面上同时使用了javascript和jquery代码。由于某种原因,jQuery库正在阻止我的本机javascript代码正常工作。

我找到了此页面:jQuery No Conflict,它表明您可以使用jquery.noConflict将$释放回javascript。但是,我不确定该怎么做?

具体来说,我不确定如何正确执行此操作?Jquery代码在哪里,JS代码在哪里?

我的代码如下:

<script type="text/javascript">
  $.noConflict();
  // Code that uses other library's $ can follow here.
</script>

阅读 429

收藏
2020-05-01

共1个答案

小编典典

jQuery.noConflict将重置$变量,因此它不再是的别名jQuery。除了只调用一次,您真正需要做的事情就不多了。不过,如果您愿意,可以使用返回值创建自己的别名:

var jq = jQuery.noConflict();

而且,通常,您希望在包含jQuery和任何插件之后立即执行此操作:

<script type="text/javascript" src="/path/to/jquery.js"></script>
<script type="text/javascript" src="/path/to/jquery-plugin.js"></script>
<script type="text/javascript">
  jQuery.noConflict();
  // Code that uses other library's $ can follow here.
</script>
<script type="text/javascript" src="/path/to/prototype.js"></script>

您还可以走得更远一步,腾出jQuerynoConflict(true)。但是,如果采用这种方法,您肯定会想要一个别名,因为它既不是$也不jQuery是您想要的:

var jq = jQuery.noConflict(true);

我认为最后一个选项主要用于混合版本的jQuery,尤其是当您想更新jQuery本身时用于过时的插件:

<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript" src="jquery-older-plugin.js"></script>
<script type="text/javascript">
    var jq144 = jQuery.noConflict(true);
</script>
<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript" src="jquery-newer-plugin.js"></script>
2020-05-01