从jQuery 1.x升级到jQuery 2.x

我正在尝试从jQuery 1.x升级到jQuery 2.x.

我有jQuery 1.8和jQueryUI 1.8,现在我想升级到jQuery 2.x并增强我的web应用程序。

所以我的问题是要更改和删除,如Ajax事件

就像我正在谈论的这些错误

Uncaught TypeError: Object [object Object] has no method 'live' 

.on()和.ajax()函数是否改变了? (我知道.live被弃用)。

PS我必须添加使用jQuery 2的Zurb Foundation 5。

  1. 不要在位置属性中使用offset选项,例如代码$element.position({my: 'center center', at: 'center center', offset: '5 -10'})应该用$element.position({my: 'center center', at: 'center+5 center-10'})
  2. 不要使用$element.bind()$element.live()$element.delegate()来分配事件处理函数,使用$element.on()
  3. 不要使用$.browser浏览器嗅探,而是尝试使用function检测( $.support )。
  4. 不要使用deferred.isRejected()deferred.isResolved() ,而是使用deferred.state() 。 不要使用deferred.pipe() ,应该使用deferred.then()方法。
  5. 不要使用$elements.size()方法,而是使用$elements.length属性。 .size()方法在function上等同于.length属性; 然而, .length属性是首选的,因为它没有函数调用的开销。
  6. .trigger() ed“click”事件中的checkbox/广播状态现在与用户启动的操作具有相同的状态。
  7. 更改.data()键的命名约定,例如, ui-dialog而不是dialog 。 ( http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys )。
  8. 不要使用$.ui.contains() ,而是使用$.contains()
  9. 每个小部件实例都有唯一的标识符this.uuid和event namespace this.eventNamespace = "." + this.widgetName + this.uuid this.eventNamespace = "." + this.widgetName + this.uuid 。 不要手动生成类似的东西。
  10. 不要使用$element.focus(n) – 它被弃用。 使用setTimeout(function() { $element.focus(); }, n);
  11. 不要使用$element.zIndex() – 不build议使用。
  12. 不要使用$.ui.keyCode.NUMPAD_*常量 – 它们被删除。
  13. 不要使用$element.data('someWidget')来检索小部件实例。 使用instance()方法: $element.someWidget('instance') 。 与其他插件方法不同, instance()方法可以安全地调用任何元素。 如果元素不是给定小部件的实例,则方法返回undefined$('<div></div>').dialog('instance') /* returns undefined instead of throwing Error */

原始升级指南和完整的更改列表:

  • jQuery Core 1.9升级指南
  • jQuery UI 1.9升级指南
  • jQuery UI 1.10升级指南
  • jQuery UI 1.11升级指南
  • jQuery UI 1.12升级指南

如果你想升级到jQuery 1.x到jQuery 2.x应该考虑这一点,并采取这些步骤:):

1. 不再支持IE6 / 7/8

我仍然认为放弃IE8还为时过早,但是团队不能再等了。 jQuery 2.0删除所有遗留的IE代码,用于节点select,DOM操作,事件处理和Ajax。

2. 自定义构buildfunction已在2.0版中进行了改进

所以你可以排除12个未使用的模块中的任何一个,并将jQuery缩小到10Kb以下。 可以省略的模块有: function列表

我应该升级吗?

了解jQuery 2.0与jQuery 1.9的API校验是很重要的。 有less量的错误修复,但没有新的function。

但是,如果你是那些已经失去对IE6 / 7/8的支持的幸运开发者之一, 抓住jQuery 2.0,不要回头。

在jQuery 1.9中,几个方法已被删除,在以前的jQuery版本中可用。

如果你正在使用这些方法,那么是的,你会遇到问题。

否则,你不会遇到问题。

使用你提到的jQuery的migrate插件将解决所有的问题,你可能有从1.8升级到1.9 +(其中包括2.x),它也会告诉你任何你使用的方法已经被删除时,你看看控制台。 迁移插件是将jquery从1.6x-1.8x升级到1.9 + / 2.0 +的最佳方式。 包括jQuery的2.x,然后包括迁移插件,然后打开您的控制台,并replace旧的方法,直到迁移插件停止给你的警告。 在这一点上,你应该能够安全地删除迁移插件。