我正在将 jQuery 从 1.12.3 升级到 3.5.1(最新版本)。我的应用程序很大,我们有 jQuery 版本 1.12.3。在 jQuery 迁移脚本的帮助下升级时,遇到了一些技术挑战:
- 不能直接从版本 1.xx 升级到 3.xx(显然我们不能清楚地做到这一点,他们在 jQuery 指南中提到。因为大多数 api 在 1.xx 版本中已被弃用)。
- 首先出于测试目的,我尝试了带有 3.3.0 迁移脚本的 3.5.1 jQuery。由于我的应用程序被大多数带有 jQuery 版本(1.12.3)的客户端使用,因此它产生了更多的阻塞问题。所以我计划先一步一步迁移到 2.2.4 jQuery 和 1.4.1 迁移。在我的应用程序中,我们为单个模块使用了很多 die() 和 live() 事件,因此我计划为 die() 和 live() 事件制作我们自己的迁移脚本。这是 live() 的代码,它转换为 on()。
jQuery.fn.live = function( types, data, fn ) {
try{
if(typeof(this.selector) == "undefined" && typeof(this[0].id) != "undefined"){
this.selector = String("#" + this[0].id);
}
}catch(e){
}
if(typeof(this.context) == "undefined"){
this.context = jQuery(this).parent();
}
else{
this.context = "body";
}
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
};
它运作良好。当对 Die() 使用相同的技术时,它不起作用。因为例如
$(".selector").die().live("click",function(){}).
我们无法获取 die 函数的事件和选择器。所以我放弃了这个选项。有没有其他方法可以通过最少的代码更改来升级 jQuery?
或者
如果我手动更改 on() 和 off() 方法,如何确保事件正常工作而不是手动测试。由于手动代码替换和测试将影响 Web 应用程序开发路线图时间表。