6

在 jQuery 中使用已弃用的方法时是否有其他选择?

是否有任何兼容的迁移工具可以消除所有版本控制问题,而不是更改代码?

4

3 回答 3

3

这里是 :)

jQuery 迁移插件可能会帮助你:)

该插件将支持已弃用的功能。

请注意,此插件仅用于迁移目的!不推荐使用的功能被弃用是有原因的!

于 2013-08-01T09:50:44.760 回答
2

jQuery Migrate 插件对于从 1.6.4 版本升级到 1.9+ 非常有帮助。低于此值的任何内容,您都可以自己处理这些错误。当我将我们的项目从 jQuery 1.4.2 升级到 jQuery 最新版本时,我逐步完成了每个次要版本并检查了发行说明(例如 1.5.2)。我发现 jQuery migrate 插件不支持的问题之一是.prop()方法的添加,以及方法的新含义.attr()

当我升级 jQuery 时,我的主要问题是将我的所有.live()事件都更改为.on(),而这个插件确实帮助了我。它还会告诉您对该方法的支持已经消失,尽管除了使用诸如modernizr之类的工具并改用特征检测方法$.browser之外,它不会提供任何真正的解决方案。

我使用脚本的方式是从这里下载,然后将其添加到您的页面中。注意:插件有两个版本,一个用于开发,一个用于生产。两者都试图解决任何折旧问题,但开发也将通过控制台通知您每个问题(每个都以 开头JQMIGRATE)。鉴于您似乎只是要求对折旧方法的支持,我会使用生产版本,但您应该认真尝试替换所有折旧代码,因为现代 jQuery 提供了一些严重的性能改进* - 尤其是在 jQuery 2 中,已放弃对旧版 IE (<=8) 的支持。

*一些测试,但 jQuery 1.8/1.9 对我来说都胜出

于 2013-08-01T09:54:40.927 回答
1

如果除了使用不推荐使用的方法之外没有其他选择,则应该将调用包装在函数中,这样您以后不必重写所有代码,而是包装器自己运行。

function myRequiredFunctionality(params) {
    // ... Convert params from domain logic to what jQuery expects ...
    $.deprecatedCall( ... );
    // ...
}

这样,您的应用程序代码将只引用您的myRequiredFunctionality函数而不是不推荐使用的东西,因此,除了上面的函数,您的代码可以保持不变,以防 jQuery 替换不推荐使用的功能。

这实际上适用于任何第三方库的使用和任何编程语言。将自己与您使用的第 3 方的东西隔离开来总是一个好主意,这样您就不会依赖它。

于 2013-08-01T09:51:34.457 回答