为什么我必须使用多个jQuery库来使我的脚本工作?

时间:2012-10-27 15:55:20

标签: jquery version conflict

我在我正在制作的网站上使用以下代码:

            <!-- ScrollTo & highlightfade -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>              
<script type="text/javascript" src="'.$url.'/js/jquery.scrollTo-min.js"></script>
<script type="text/javascript" src="'.$url.'/js/jquery.highlightFade.js"></script>
<script type="text/javascript" src="'.$url.'/js/init.js"></script>

            <!-- The rest of the scripts -->
<script type="text/javascript" src="http://code.jquery.com/ui/1.8.23/jquery-ui.min.js"></script>

<script type="text/javascript" src="'.$url.'/js/jquery.tipTip.js"></script>
<script type="text/javascript" src="'.$url.'/js/jquery.nivo.slider.pack.js"></script>
<script type="text/javascript" src="'.$url.'/js/nivo.slider.js"></script>
<script type="text/javascript" src="'.$url.'/js/nicEdit.js"></script>
<script type="text/javascript" src="'.$url.'/js/expand.js"></script>
<script type="text/javascript" src="'.$url.'/js/turn.js"></script>
  • 正如您所看到的,我正在使用2个jQuery库,这就是我所拥有的 理解,完全错了。问题是它只能起作用 办法!如果我删除其中一个,一些脚本拒绝工作。我也是 尝试将库更新到最新版本并仅使用它 版本,但之后只有少数几个脚本可以工作。

  • 我的第二个问题是:当我尝试加载datetimepicker脚本时 不起作用,似乎是因为jQuery库冲突。

我只能在一个库中同时使用所有脚本,并且当使用两个库时,datetimepicker-script不起作用。我做错了什么?

2 个答案:

答案 0 :(得分:1)

你正在使用jQuery和jQuery UI以及一大堆插件,没有任何问题。我的假设是如果你不确定这一点,那么在使用之前请阅读更多关于jquery和UI的内容。

如果日期选择器造成麻烦,请查看一些相关示例以尝试查看您做错了什么 - http://jqueryui.com/datepicker/

编辑: @ user1580380 jquery和jquery UI是两个独立的东西,第一个是漂亮的简易js库,第二个是添加像datepicker这样的额外功能的UI。您需要同时包含两个日期选择器才能工作。您在执行datepicker时可能会发生错误,请随意粘贴一些代码。

编辑:我注意到您正在使用jquery 1.3,可能是这个问题,请将其更新为最新版本1.8.x并查看是否有任何更正。

答案 1 :(得分:0)

您的代码段显示了多种类型的脚本:

  1. 核心jQuery
  2. 使用和依赖jQuery的jQuery插件脚本
  3. 您自己使用和依赖jQuery的脚本
  4. jQuery UI(基于jQuery构建的UI库)
  5. 使用和依赖jQuery和jQuery UI的jQuery插件脚本
  6. 每个使用jQuery的脚本都是针对特定版本的jQuery编写和测试的。有时,它适用于多个版本的jQuery,有时它只适用于一个特定版本的jQuery。

    脚本的作者负责使用jQuery来指定它兼容的jQuery版本。使用该脚本的人员有责任了解和理解所需的jQuery版本,并创建适当的环境(使用正确的jQuery版本),以使脚本正常工作。

    特定版本的jQueryUI仅与某些版本的核心jQuery兼容。同样,jQueryUI插件只与jQueryUI和jQuery的某些版本兼容。你自己必须混合搭配所有这些的兼容版本。

    如果您希望使用多个插件,每个插件都需要不同版本的jQuery,有时可以对其进行管理,但设置并不是一件容易的事情,它不是一种使用jQuery的有效方式需要一些自定义编程来加载多个版本,并确保正确的插件获得正确版本的jQuery。一般来说,这是不推荐的,因为它是低效和复杂的,如果你不是一个高级的JavaScript开发人员,特别容易陷入困境。

    首先,您应该列出每个脚本的jQuery版本,并说明它与之兼容。当你有了这个列表时,你可以开始理解什么可能与什么兼容或者开始研究如何找到一组解决你的问题的脚本,这些脚本都与相同版本的jQuery兼容。

    例如,jQueryUI 1.8.23比jQuery 1.3.2(核心jQuery库的一个相当旧的版本)要新很多。我建议从这两个开始,并确保它们兼容。然后,只添加与您最终结合的这两个组合兼容的插件。您需要查阅每个插件的文档,以找出它兼容的jQuery版本。如果它没有关于jQuery兼容性的任何文档,那么请查看插件的源代码,看看是否有任何指示。如果仍然没有任何兼容性信息,那么您将不得不进行自己的测试/调试以确定兼容性,或者选择能够为您提供兼容性信息的其他解决方案。

    如果您是jQuery和javascript开发的相对新手,那么您可能希望坚持使用包含有关哪些工作和哪些无效的文档的组合,并构建您的环境以与其测试要求兼容。调试和修复不兼容问题不是一个初学者的主题。您可能(或可能不)能够在javascript调试控制台中识别出问题的第一个位置,但修复您发现错误的内容是一个更高级的主题。

    如果您最终确定必须在同一页面上为不同的插件加载多个版本的jQuery,并且没有更好的方法来解决您的问题,那么这是可能的,但必须小心谨慎。这个jQuery doc page描述了如何完成的基础知识。