我们一直在我们的Web应用程序中使用jQuery 1.4.2。最近有人建议我们升级到更新的版本。到目前为止,我们正在考虑升级到1.9.1,因为我们需要支持IE7和IE8。 我们的应用程序使用大量插件,例如fancybox,cookies,tipsy,jcarousel和其他一堆。另外我们有很多脚本文件,可能大约有50个文件。然后是一些嵌入文件的脚本。我觉得这将是一场灾难! 有人有建议吗?我们还没有开始升级到1.9.1。如果我想,我可以说服经理们升级到另一个版本。我们最安全的赌注是什么? 请指教。
谢谢!
答案 0 :(得分:12)
只需查看代码中已弃用的函数;需要注意的最重要的是.live()
和.delegate()
已替换为.on()
,.attr()
替代.prop()
,{{1} }}。随着新版本的出现,我一直在更新我的代码,这很简单(约20K行的js),所以你不应该有任何问题。刚开始我提到的功能,我认为这将解决大部分问题。然后,查看.browser()
插件。
答案 1 :(得分:3)
您可以尝试使用jQuery Migrate plugins,该{{3}}用于检测和恢复在jQuery中已弃用且从1.9版开始删除的API或功能。
答案 2 :(得分:0)
除了frenchie的答案之外,如果你的应用程序从代码隐藏中注入自定义html属性,那么在客户端那些属性仍然只能使用attr()而不是new prop()来读取
根据我目前的理解,这是因为元素的名称 - 属性添加只有当它们是DOM元素类型的本机属性或者使用相同的客户端jQuery prop()方法添加时才被识别为属性。
第一次做类似的jQuery升级,我发现这个关于attr和新prop之间差异的帖子非常有趣:prop-vs-attr
答案 3 :(得分:0)
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
使用浏览器嗅探,请尝试使用功能检测($.support
)。deferred.isRejected()
,deferred.isResolved()
,而是使用deferred.state()
。不要使用deferred.pipe()
,而应使用deferred.then()
方法。$elements.size()
方法,而是使用$elements.length
属性。 .size()
方法在功能上等同于.length
属性;但是,.length
属性是首选属性,因为它没有函数调用的开销。.trigger()
中的复选框/广播状态"点击" event现在具有与用户启动的操作相同的状态。.data()
个键的命名惯例,例如ui-dialog
而不是dialog
。 (http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys)。$.ui.contains()
,而是使用$.contains()
。this.uuid
和事件命名空间this.eventNamespace = "." + this.widgetName + this.uuid
。不要手动生成类似的东西。原始升级指南和完整的更改列表: