Ross Wan's World!

Python, Ajax, PHP and Linux.

jQuery 1.2.2:两周年礼物

Posted by Ross Wan 于 2008/01/25

       1月15日,是 jQuery 的两周年纪念日,当天,jQuery 发布了新的版本 jQuery 1.2.2 作为生日礼物!新版本修补了旧版( jQuery 1.2 )的大量 Bug。详情可以查看 bug tracker

下载

       如果想查看 jQuery 的源代码,可以使用下面的 Subversion 指令 Check out:

svn co http://jqueryjs.googlecode.com/svn/tags/1.2.2

重要更新

       在这个版本中, Brandon Aaron 和 David Serduke 投入了大量的精力。虽然 David Serduke 是 jQuery 核心开发组的新晋成员,但他已经对 jQuery 作出了意义深远的贡献!

       jQuery 1.2.2 是一个 Bug 修补和性能优化的版本,它已经修补了120多个Bug,并且通过了1157多个测试。

$(DOMElement) 速度提升300%(300% Speed Improvements to $(DOMElement))

       通过微小的改进,jQuery 再次提升了一个台阶,这次提升特别有益将 Dom element 传递给 function 的参数。(例如:$(this))

       下面是几个主流浏览器的测试结果:

Browser 1.2.1 (ms) 1.2.2 (ms)
Firefox 2 0.041 0.015
Firefox 3 0.033 0.01
Safari 3 0.017 0.005
Opera 9 0.023 0.004
Internet Explorer 6 0.04 0.03

改进 .ready().(ready() Overhaul)

       以往的 $(document).ready() 实现代码过于冗长,在这个版本中,对它作了大量的改进。

  • 对 IE 浏览器的 $(document).ready() 作了一个彻底的改良。当中使用了一个新的技术,灵感来于 Diego Perini 。它的实现很巧妙,使得不再需要 document.write() :)
  • 对于所有浏览器,将会等待 CSS 加载并生效,像 DOM 的 .ready() 一样。特别地,使 Safari 和Opera 也可以实现这个功能。
  • $(document).bind(‘ready’,fn); ── 你现在可以通过传统的 .bind() 方法来绑定 document 的 ready 事件。当然,.ready() 方法仍然可以照常使用 :)

.bind(“mouseenter”) / .bind(“mouseleave”)

       .hover() 方法的核心功能将分拆成两个跨浏览器的事件:mouseenter 和 mouseleave。它们跟 mouseover 和 mouseout 不同(These are different from mouseover and mouseout as those events will fire as you move in and out of child elements (which is generally not desired))。例如,下面的两种实现都可以在 jQuery 1.2.2 上正常工作:

$(“li”).hover(function(){
  $(this).addClass(“hover”);
}, function(){
  $(this).removeClass(“hover”);
});

$(“li”).bind(“mouseenter”, function(){
  $(this).addClass(“hover”);
}).bind(“mouseleave”, function(){
  $(this).removeClass(“hover”);
});

.bind(“mousewheel”)

       基于 Brandon Aaron 的一个新的插件,jQuery 支持 mousewheel 事件。例如:

$(“div”).bind(“mousewheel”, function(event, delta){
  if ( delta < 0 )
    $(this).append(“up”);
  else
    $(this).append(“down”);
});

Complex :not()

       尽管 :not() 不是 CSS 3 规范的一部分,但它已经成了常规的功能请求。现在,你可以对 :not() selectors 使用复合的表达式。示例:

$(“.hover:not(li.active)”)

$(“li:not(.active,.hover,:contains(test))”)

Accept Headers

       对正常的 jQuery Ajax 操作,Ajax 现在发送额外的 Accept header ,使得服务器知道我们请求的 content 的类型。如果你指定了Ajax 的  dataType 参数,Ajax 将会小心处理所有的 header 设定。现在支持的 dataType 如下:

  • xml “application/xml, text/xml”
  • html “text/html”
  • script “text/javascript, application/javascript”
  • json “application/json, text/javascript”
  • text “text/plain”
  • Everything else: “*/*”

 Bug Fixes

       下面是部分重要的修补:

  • .clone() overhaul
  • Script evaluation overhaul
  • height() / width() overhaul
  • Cross-frame DOM manipulation
  • A few memory leaks have been resolved
Advertisements

一条回应 to “jQuery 1.2.2:两周年礼物”

  1. Ross Wan said

    最近比较忙,迟了这么多天才能写 :(

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

 
%d 博主赞过: