在jQuery中使用已弃用的方法时还有其他选择吗?
是否有任何兼容的迁移工具可以解决所有版本问题,而不是更改代码?
答案 0 :(得分:3)
答案 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替换了已弃用的函数,您的代码可以保持不变。
对于任何第三方库使用和任何编程语言都是如此。将你自己与你使用的第三方内容隔离开来总是一个好主意,这样你就不会依赖它了。