您的位置:首页 > Web前端 > JQuery

jQuery 1.9 兼容低版本jQuery插件的处理方法

2016-05-03 17:28 549 查看
jQuery是目前使用最为广泛的javascript框架之一,也有很多开发者在很多网站上都有使用jQuery并且会因为新版本的某些新特性选择性地升级,或者说毫无理由地升级,因为新的框架自然有很多牛B的功能和特性。但是升级之后发现在原来使用的jquery插件不兼容新的jquery,因为新的jQuery可能会将某些类似的功能进行合并,或者抛弃一些官方认为不再重要的方法。这种情况下很多开发者就开始头疼,但是解决方案只有两种,1、降级为低版本,或降级到依赖插件最高支持的版本;2、升级各类依赖插件;3、做兼容性处理

笔者每一种方案都试过,方案1是可以解决问题,但是随着技术需要不断地发展旧版本的框架提供的功能及方法便不足以支持新的需求。方案二是个比较麻烦的方法,因为一个大型的网站会依赖各种插件来完成各项功能,而有些插件可能已经断码了(没有新的版本),并且替换插件之后,由于插件本身升级也会对内部方法及功能有所取舍,导致开发者不得不对调用代码进行整改及替换……;方法三是笔者比较喜欢使用的方式,在jQuery引用的下方加入一个兼容包,里面处理各种兼容问题便可巧无声息地升级jQuery。

目前jquery1.9以上的版本对个别使用率较高的方法进行了删除……如:.brower()、.live()、.die()等

由于有些方法都有替代的方法,这一类问题我是这样解决的

<script src="jquery-1.9.1.js"></script>
<script src="jquery-compatibility.js"></script>
jquery-compatibility.js内部(通过jquery继承将live转到on):

jQuery.fn.extend({
live: function( types, data, fn ) {
return this.on( types, null, data, fn );
}…………
});

其它类似的方法也可使用继承,但.brower()可能需要自己做userAgent的判断大概是这样

jQuery.extend({
browser: function()
{
var
rwebkit = /(webkit)\/([\w.]+)/,
ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
rmsie = /(msie) ([\w.]+)/,
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
browser = {},
ua = window.navigator.userAgent,
browserMatch = uaMatch(ua);

if (browserMatch.browser) {
browser[browserMatch.browser] = true;
browser.version = browserMatch.version;
}
return { browser: browser };
},
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: