替换使用已弃用的jQuery方法的代码

时间:2013-08-01 09:46:43

标签: jquery

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

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

3 个答案:

答案 0 :(得分:3)

这是:)

jQuery migrate plugin可能会帮助你:)

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

请注意,此插件仅用于迁移目的!不推荐使用的函数因某种原因而被弃用!

答案 1 :(得分:2)

jQuery Migrate Plugin在从版本1.6.4升级到1.9+时非常有用。低于此值的任何东西,您可能已经自己处理了这些错误。当我将项目从jQuery 1.4.2升级到最新的jQuery时,我逐步完成了每个次要版本,并在我进行时检查了release notes (e.g. for 1.5.2)。我发现jQuery迁移插件不支持的一个问题是添加了.prop()方法,以及.attr()方法的新含义。

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

我使用该脚本的方式是下载from here,然后将其添加到您的网页中。注意:该插件有两个版本,一个用于开发,另一个用于生产。两者都试图消除任何折旧问题,但开发时也会通过控制台通知您每个问题(每个都以JQMIGRATE开头)。鉴于您似乎只是要求对折旧方法提供支持,我会使用生产版您应该认真尝试替换所有折旧代码,因为现代jQuery提供了一些{{3} } * - 最值得注意的是在jQuery 2中,对旧版IE(< = 8)的支持已被删除。

* 许多测试,但jQuery 1.8 / 1.9对我来说都是胜利

答案 2 :(得分:1)

如果除了使用不推荐使用的方法之外没有其他选择,则应该将调用包装在函数中,以便以后不必重写所有代码,但包装函数本身也是如此。

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

这样,您的应用程序代码将仅引用您的myRequiredFunctionality函数而不是已弃用的函数,因此,除了上述函数之外,如果jQuery替换了已弃用的函数,您的代码可以保持不变。

对于任何第三方库使用和任何编程语言都是如此。将你自己与你使用的第三方内容隔离开来总是一个好主意,这样你就不会依赖它了。