旧版本与较新版本的jquery

时间:2015-05-07 12:44:11

标签: jquery jquery-plugins

我遇到了jquery插件的一个主要问题。我有一些用jquery 1.7.1编写的代码,现在我开始使用bootstrap,需要1.9.1 jquery插件或更高版本。

包含此版本“https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js”后,我之前的功能停止了工作。然后我使用了两个版本但又没有运气。

我不想重写我以前的代码,使其与新版本兼容。请提供解决方案

我收到很多错误:Uncaught TypeError:that.errorDialog.dialog不是函数,.live不是函数,.dialog没有定义,null错误。我的代码使用jQuery 1.7.1

工作正常

如何解决此问题请帮助。

谢谢! 迪皮卡乌达

2 个答案:

答案 0 :(得分:1)

您可以尝试仅加载较新版本的jQuery,然后加载jquery-migrate,这将恢复一些旧功能。但是,如果不知道您的应用需要哪些特定功能,我无法确定这是否可以解决问题。

https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js

理想情况下,您应该确定依赖于旧版jQuery的代码并更新它们以使用最新版本。在一天结束时,jQuery的更改是有原因的。对于新的实现,你几乎肯定会更好。

如果您明智地决定更新代码,那么jQuery Core 1.9 Upgrade Guide可能是一个很好的起点

答案 1 :(得分:0)

当你加载jQuery.x.x.js时,它将覆盖现有的$和jQuery变量。但它保留了它们的备份副本(在_$_jQuery中)。 调用noConflict(true)可以恢复js包含之前的情况!

noConflict()为您提供正在运行的实例(上次加载的实例),因此您可以通过这种方式使用您的版本

恢复:

  • 原始页面加载了他的“jquery.versionX.js”
  • $和jQuery属于versionX
  • 你打电话给你的“jquery.versionY.js”
  • 现在$和jQuery属于versionY,加上_ $和_jQuery属于versionX
  • var my_jQuery = jQuery.noConflict(true);
  • 现在$和jQuery属于versionX,_ $和_jQuery可能为null,而my_jQuery是versionY

如果您想恢复到特定版本,请在HTML中添加以下JavaScript代码。

<script type="text/javascript">
    if (jQuery.fn.jquery != "1.11.0")
        var jQuery_1_11_0 = $.noConflict(true);
</script>