从jQuery 1.1升级到1.2开发注意事项

看到绯雨的网站,非常好,介绍了不少jQuery的内容。此处转载一下1.1升级至1.2的差异性。

网上大部份的资料都是以jQuery 1.12为基础讲的。1.12至1.21更新了不少东西,如果不看官方的更新文档或者官方最新的API可能对开发造成影响。

1、选择器不支持XPath

XPath自1.2开始不再被jQuery默认支持。您可以通过插件形式来继续使用XPath,但是强烈建议您使用官方的选择器来替代XPath。

[code]$("div//p") //XPath写法
$("div p") //标准写法

$("div/p") //XPath写法
$("div>p") //标准写法

$("p/../div") //XPath写法
$("p").parent("div") //标准写法

$("div[p]") //XPath写法
$("div:has(p)") //标准写法

$("a[@href]") //XPath写法
$("a[href]") //标准写法[/code]

2、使用slice替代eq,lt,gt

eq及lt,gt方法非常好用,但官方从1.1.4开始放入了slice方法来替代它们,中间有一版本完全取消了eq(好像是1.2),然后又因为抗议太多,又把eq加回来了(群众的力量是强大的),但是难保eq在以后的版本还会继续存在。建议换成slice

[code]$("p").eq(0) //使用eq方法
$("p").slice(0,1) //使用slice方法

$("p").lt(2) //使用lt方法
$("p").slice(0,2) //使用slice方法

$("p").gt(2) //使用lt方法
$("p").slice(3) //使用slice方法[/quote]

3、contains方法官方不再赞成使用(有被取消掉的可能)

$("p").contains('text') //使用contains方法
$("p").filter(":contains(text)") //使用filter方法+选择器

4、loadIfModified,getIfModified,ajaxTimeout方法被取消

这3个方法应该算是冷门方法了,用的人应该是很少很少,替代方法如下。

[code]$("#elem").loadIfModified("some.asp") //使用loadIfModified方法
$.ajax({ //使用ajax方法(JSON参数里加入了ifModified)
url: "some.asp",
ifModified: true,
success: function(html) {
$("#elem").html(html)
}

});

$("#elem").getIfModified("some.asp") //使用getIfModified方法
$.ajax({ //使用ajax方法(JSON参数里加入了ifModified)
url: "some.asp",
ifModified: true

});

$.ajaxTimeout(3000) //使用ajaxTimeout方法
$.ajaxSetup({timeout: 3000}) //使用ajaxSetup方法[/code]

此外,版本更新里对动画效果也做了修改,具体看官方API的animate部份。此文档以1.1.4和1.2的更新说明为基础写的,可以上官网查看对应的原版更新文档。
1.2的选择器:http://shawphy.com/article.asp?id=8

发表评论