将jQuery 1.4.2升级到1.9.1
我们一直在web应用程序中使用jQuery1.4.2。最近有人建议我们升级到新版本。到目前为止,我们正在考虑升级到1.9.1,因为我们需要支持IE7和IE8。 我们的应用程序使用了大量插件,例如fancybox、cookies、tipsy、jcarousel和其他插件。另外,我们有很多脚本文件,大概有50个左右。然后是一些嵌入文件的脚本。我觉得这将是一场灾难! 有人有什么建议吗?我们还没有开始升级到1.9.1。如果我愿意,我可以说服经理升级到另一个版本。我们最安全的赌注是什么? 请告知将jQuery 1.4.2升级到1.9.1,jquery,upgrade,Jquery,Upgrade,我们一直在web应用程序中使用jQuery1.4.2。最近有人建议我们升级到新版本。到目前为止,我们正在考虑升级到1.9.1,因为我们需要支持IE7和IE8。 我们的应用程序使用了大量插件,例如fancybox、cookies、tipsy、jcarousel和其他插件。另外,我们有很多脚本文件,大概有50个左右。然后是一些嵌入文件的脚本。我觉得这将是一场灾难! 有人有什么建议吗?我们还没有开始升级到1.9.1。如果我愿意,我可以说服经理升级到另一个版本。我们最安全的赌注是什么? 请告知 谢谢大家
谢谢大家! 您可以尝试使用它来检测和恢复jQuery中已弃用并从1.9版起删除的API或功能。只需查看代码中仍存在的弃用函数;需要注意的大问题是
.live()
和.delegate()
,它们已被.on()
取代,.attr()
取代.prop()
和.browser()
。随着新版本的出现,我一直在更新我的代码,这非常简单(大约20K行js),所以你应该不会有任何问题。从我提到的函数开始,我认为这将解决大多数问题。然后,查看Migrate
插件。除了您的答案之外,如果您的应用程序从代码背后注入自定义html属性,那么在客户端,仍然只能使用attr()而不是新的prop()读取这些属性
根据我目前的理解,这是因为添加到元素的名称-值属性只有在它们是DOM元素类型的本机属性,或者是使用相同的客户端jQuery prop()方法添加时才被识别为属性
在第一次进行类似的jQuery升级时,我发现关于attr和新道具之间差异的这篇文章读起来非常有趣:
offset
选项,例如code$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()
$一起使用。浏览器
,请尝试改用功能检测($。支持
)deferred.isRejected()
,deferred.isResolved()
,而是使用deferred.state()
。不要使用deferred.pipe()
,应该使用deferred.then()
方法$elements.size()
方法,而是使用$elements.length
属性。.size()
方法在功能上等同于.length
属性;但是,首选.length
属性,因为它没有函数调用的开销.trigger()
ed“click”事件中的复选框/无线电状态现在与用户启动的操作中的状态相同.data()
键的命名约定,例如,ui对话框
而不是对话框
。()$.ui.contains()
,而是使用$.contains()
this.uuid
和事件命名空间this.eventNamespace=“.”+this.widgetName+this.uuid
。不要手动生成类似的内容