JavaScript语法中的九个陷阱

JavaScipt框架jquery发布1.1.4版本

很久没有去关注JQuery网站了,今天突然发现网站改版了,把插件栏目都调整了一下,我在想,该不会有新版本发布了吧!于是回到首页一看果然 Jquery.js 1.1.4发布了.
不知道这次有了些什么改进,希望能把与AjaxPro在.NET1.1中Json冲突的问题解决了,这个问题一直郁闷着我,用AjaxPro开发快,不过只能取取数据,而JQuery可以帮助快速地实现很多功能。两个没法一起用,前段时间都找了到久。
还好后边AjaxPro发布了个新版本,才解决了这个问题(不过只是在.NET2.0中才解决了1.1中依然存在)
刚刚在官方中博客中看到,更新有提高获取对象的速度,有一个比较:

$(”#id”) Improvements
浏览器 jQuery 1.1.3 jQuery 1.1.4 提高比例
IE 6 651ms 70ms 830%
Firefox 2 1355ms 27ms 4919%
Safari 3 101ms 14ms 620%
Opera 9 270ms 62ms 335%
Average improvement: 1676%

$(”elem”) Improvements
浏览器 jQuery 1.1.3 jQuery 1.1.4 提高比例
IE 6 661ms 451ms 47%
Firefox 2 1717ms 143ms 1100%
Safari 3 99ms 83ms 19%
Opera 9 226ms 198ms 14%
Average improvement: 295%

.each() Improvements
浏览器 jQuery 1.1.3 jQuery 1.1.4 提高比例
IE 6 200ms 30ms 567%
Firefox 2 468ms 29ms 1514%
Safari 3 17ms 11ms 54%
Opera 9 45ms 25ms 80%
Average improvement: 554%

新增了slice的方法,作用是取得对象中的第几个,如:
$("div") 这个方法可能取到很多个对象,哪你可以用 $("div").slice(n)来取出第n个对象,补足了以前要用each来找中间的对象的麻烦。
    $().ready(function(){
        alert($("div").slice(0).html());
        alert($("div").slice(1).html());
        alert($("div").slice(2).html());
        alert($("div").slice(-1).html()); //取最后个
    });


    1第一个
    2第二个
    3中间的
    4中间的
    5这个最后个div $("div").slice(-1);
:has方法
//取所有div里面带有p的对象
$("div:has(p)")
另外修正了N多BUG,具体只有慢慢体验了,快去JQuery官方网站下载吧。

下载压缩后的1.1.4版jquery:jQuery 1.1.4 (Compressed, 21KB)
下载完成注释未压缩版的jquery:jQuery 1.1.4 (65KB)
下载帮助文件及所有源代码包:jQuery 1.1.4 (Docs, Source Code)

几个函数的速度提升值对比:

$(”#id”) 函数在firefox2下提升了4919%,从1.1.3版的1355ms提升到27ms,ie6下也提升了830%。各浏览器的执行速度平均提升1676%!!!
$(”elem”) 函数在firefox2下提升了1100%,从1.1.3版的1717ms提升到143ms,ie6下也提升了47%。各浏览器的执行速度平均提升295%!!!
.each() 函数在firefox2下提升了1514%,从1.1.3版的468ms提升到29ms,ie6下也提升了567%。各浏览器的执行速度平均提升554%!!!
列举几个新加的函数:

.slice() //更直观地从元素组中选取元素
//使用方法:
// $(”div”).slice(0,1); //选第一个div
// $(”div”).slice(1,-1); //从所有div中选取第一个和最后一个

:has() //从一组元素组中选取出有指定属性的一组
//使用方法:
// $(”a:has(img)”) //所有的图片链接
// $(”div:has(a:has(img))”) //所有有图片链接的div

.extend() //扩展函数
//使用方法:
// jQuery.extend(
// { name: “John”, location: { city: “Boston” } },
// { last: “Resig”, location: { state: “MA” } }
// );
//结果:
// { name: “John”, last: “Resig”, location: { state: “MA” } }

.noConflict(true) //防止jquery与别的框架冲突(给jquery换名)还可以将jquery引一个已经存在的命名空间里去
//使用方法:
// var jq = jQuery.noConflict(true);
// jq(”#id div”).hide();

每次的版本更新都会大幅提升 selector 的速度。不过这次的版本更新作为 1.1.x 的最后一个版本,为了给九月份的 1.2 版做铺垫,去掉了一些老版本中的方法。因此在使用之前最好确认一下原有代码的兼容性。
比如在 Validation 插件的 showLabel 方法中,作者采用 label = jQuery("<" + this.settings.errorElement + ">") 的方式来新建一个 dom 对象,在 1.1.4 中必须改为 label = jQuery("<" + this.settings.errorElement + "></" + this.settings.errorElement + ">") 才能被正常创建。否则在进行form输入字段验证的时候在IE下永远不会看到任何的提示信息显示出来。

具体 1.1.4 中 Deprecated 掉的内容包括:


  • $("div//p") , $("div/p") , $("p/../div") , $("div[p]") , $("a[@href]") 这几种 selector 写法
  • 带参数的 $("div").clone(false) 方法 ( 改而使用 .clone().empty() )
  • $("div").eq() , $("div").lt() , $("div").gt() 均由新增加的 slice 方法来实现等价功能
  • $("#elem").loadIfModified("some.php") , $.getIfModified("some.php") 均由调用底层的 $.ajax 方法来实现等价功能
  • $.ajaxTimeout(3000) 需要改而使用 $.ajaxSetup({timeout: 3000}) 来实现
  • $(…).evalScripts()
TAG: jquery javascript框架
kimi post in Jquery框架 at 2007-08-29 23:46:28.
永久地址:http://ijavascript.cn/jquery/jquery-release-1.1.4-1.html
在百度中搜索《JavaScipt框架jquery发布1.1.4版本》。

发表评论

发表评论

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。