从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。
- 不要在位置属性中使用
offset
选项,例如代码$element.position({my: 'center center', at: 'center center', offset: '5 -10'})
应该用$element.position({my: 'center center', at: 'center+5 center-10'})
。 - 不要使用
$element.bind()
,$element.live()
,$element.delegate()
来分配事件处理函数,使用$element.on()
。 - 不要使用
$.browser
浏览器嗅探,而是尝试使用function检测($.support
)。 - 不要使用
deferred.isRejected()
,deferred.isResolved()
,而是使用deferred.state()
。 不要使用deferred.pipe()
,应该使用deferred.then()
方法。 - 不要使用
$elements.size()
方法,而是使用$elements.length
属性。.size()
方法在function上等同于.length
属性; 然而,.length
属性是首选的,因为它没有函数调用的开销。 -
.trigger()
ed“click”事件中的checkbox/广播状态现在与用户启动的操作具有相同的状态。 - 更改
.data()
键的命名约定,例如,ui-dialog
而不是dialog
。 ( http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys )。 - 不要使用
$.ui.contains()
,而是使用$.contains()
。 - 每个小部件实例都有唯一的标识符
this.uuid
和event namespacethis.eventNamespace = "." + this.widgetName + this.uuid
this.eventNamespace = "." + this.widgetName + this.uuid
。 不要手动生成类似的东西。 - 不要使用
$element.focus(n)
– 它被弃用。 使用setTimeout(function() { $element.focus(); }, n);
。 - 不要使用
$element.zIndex()
– 不build议使用。 - 不要使用
$.ui.keyCode.NUMPAD_*
常量 – 它们被删除。 - 不要使用
$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旧的方法,直到迁移插件停止给你的警告。 在这一点上,你应该能够安全地删除迁移插件。