posts - 2,  comments - 3,  trackbacks - 0
  2011年11月5日

原文:http://blog.jquery.com/2011/11/03/jquery-1-7-released/

 

jQuery 1.7已经可以下载!您可以从jQuery CDN获取代码:

http://code.jquery.com/jquery-1.7.js

http://code.jquery.com/jquery-1.7.min.js

这个新版本在谷歌和微软的CDN也将在一两天后可用。

感谢你们在试用期的测试和错误报告,我们相信现在我们已经有了一个稳定的版本。如果您发现问题,提交bug并确保您选择的是jQuery 1.7版本。同时请务必提供jsFiddle的测试案例以帮助我们快速的分析问题。

 

JQUERY 1.7的新特性

使用API网站提供的版本1.7 tag可以快速的查看这个版本中的新特性。这里逐条介绍1.7中的一些重要更新,以及在API文档中没有提到的内容。

 

新事件 API: .on() 和 .off()

新的 .on() 和 .off() API 统一了jQuery中所有对文档绑定事件的操作——而且它们也更加简短!

$(elements).on( events [, selector] [, data] , handler );
$(elements).off( [ events ] [, selector] [, handler] );

当提供一个selector参数时, .on() 根据选择器过滤,并绑定一个委派的事件处理程序,类似于 .delegate() 。当这个参数被忽略或为null时则类似于 .bind() 。其中有一个模棱两可的情况:当data参数是一个字符串时,你必须提供一个selector字符串或null,使data参数不被误认为selector参数。传递一个对象给data参数,你可以不用再担心这一特殊情况。

1.7所有现有的事件绑定方法(及其相应的解除绑定的方法)仍然存在,但我们推荐您在使用1.7或更高版本的时候使用 .on() 。以下是在新旧API调用之间对应的例子。

$('a').bind('click', myHandler);
$('a').on('click', myHandler);


$('form').bind('submit', { val: 42 }, fn);
$('form').on('submit', { val: 42 }, fn);


$(window).unbind('scroll.myPlugin');
$(window).off('scroll.myPlugin');


$('.comment').delegate('a.add', 'click', addNew);
$('.comment').on('click', 'a.add', addNew);


$('.dialog').undelegate('a', 'click.myDlg');
$('.dialog').off('click.myDlg', 'a');


$('a').live('click', fn);
$(document).on('click', 'a', fn);


$('a').die('click');
$(document).off('click', 'a');

 

委托事件的性能改进

事件委托随着页面大小和复杂度的不断增长而变得越来越重要。类似Backbone和Sproutcore一样的应用框架大量的使用了事件委托。考虑到这一点,jQuery 1.7的事件处理被重构以使委派事件更加迅速,尤其是在大多数常见情况下。

为了优化最常用的选择器形式的代码,我们研究了Google Codesearch上的代码截面。近三分之二在 .live() 和 .delegate() 方法调用中使用的选择器,至少使用了tag,id,class中的一个形成tag#id.class的形式。通过分析在JavaScript中这些简单选择器在事件绑定时的状态,我们在事件传递时甚至可以超越浏览器原生实现matchesSelector的性能。对于更复杂的选择器,我们仍然使用Sizzle引擎,所以现有的代码仍然可以继续运行。

最终委托事件和1.6.4相比,节省了大约一半的时间:

 

更好的支持IE6/7/8中的HTML5

任何试图在IE 6/7/8中使用新的类似于<section>的HTML5标签的人,毫无疑问都会遇到IE 6/7/8无法解析这些标签,甚至将这些标签从文档中移除的问题。在jQuery 1.7中,我们为较旧IE版本中 .html() 一类的方法建立了对HTML5的支持。这一功能和以前的innerShiv相同。您仍然需要在您的文档头部加入HTML5Shiv以使旧IE版本支持HTML5标签。需要更多背景资料,请查看The Story of the HTML5 Shiv

 

切换动画更直观

在jQuery的旧版本中,类似于 .slideToggle() 或 .fadeToggle() 的切换动画在互相堆放和前一个动画被 .stop() 终止时无法正常工作。在1.7中这一情况被修复,动画系统会记住元素的初始值并在一个切换的动画被提前终止的情况下重置它们。

 

异步模块定义(AMD)

现在jQuery支持AMD API。请注意jQuery 1.7并不是脚本装载器本身;它是和RequireJS 或curl.js等AMD兼容的装载器合作以使它可以动态加载并使用装载器控制ready事件。现在一个AMD兼容的装载器可以从谷歌或微软的CDN加载一个jQuery 1.7的未经修改的版本。非常感谢James Burke (@jrburke) 提交的补丁和单元测试,然后耐心的等待我们纳入此功能。

 

jQuery.Deferred

jQuery.Deferred对象已经扩大到新的进度处理程序以及调用这些处理程序的通知方法。这允许您异步的通知侦听器一个未解决请求的进度或拒绝请求。此外,有一个新的 state() 方法返回当前Deferred的状态,它主要用于调试。

Deferreds现在使用新的jQuery.Callbacks特性,一种一系列的的处理程序的排队和调用的通用方法。插件开发者可能会对这一特性感兴趣,虽然Deferreds和事件子系统为这一类型的功能提供一个更高层次的接口。

 

jQuery.isNumeric()

在jQuery中我们已经发现了几种我们需要知道一个参数是数值或可以被成功的转换为数值的情况。我们决定开发并公开jQuery.isNumeric()因为它是一个有用的工具。为它传递一个任意类型的参数,它将对应的返回true或false。

 

删除的功能

 

event.layerX 和 event.layerY:我们在1.7版本删除了这些不规范的属性。虽然我们通常会对这些过时的属性留有通知期,但Chrome 16对此属性在控制台生成警告消息。因此,我们决定立即将其删除。在仍然支持这些属性的平台上,可以使用event.originalEvent.layerX和event.originalEvent.layerY.

 

jQuery.isNaN()这一未公开的实用函数已被删除,因为它侵占了一个内置的JavaScript函数名称但并不具有相同的语义,导致混乱。新的jQuery.isNumeric()提供了类似的功能,但可以被更好的支持。尽管jQuery.isNaN()并未公开, Github上的一些项目仍然在使用它。我们已经和他们联系,要求他们使用jQuery.isNumeric()或一些其他的解决方案。

 

jQuery.event.proxy()这一未公开和过时的方法已被删除。用户应该使用公开的jQuery.proxy方法以代替。

posted @ 2011-11-05 00:34 巴里切罗 阅读(441) 评论(0) 编辑
  2011年4月3日

最近几个月在做一个仿Win7界面的网页,因为是做着玩玩,再加上大四诸事缠身,也是三天打鱼两天晒网,想起来的时候写两行代码,忙了就丢在一边。

前段时间做到窗口的拖拽和调整尺寸功能。出于偷懒耍滑的考虑,打算用JqueryUI的Draggable和Resizable功能来解决问题,但是却发现无效,不管怎么拖拽,窗口还是丝毫没有反应。之后又尝试了几个Jquery的拖拽插件,都没有任何效果。

百思不得其解之下,我觉得可能是JqueryUI出了问题,于是去官网重新下载UI,结果发现当前最新的UI支持的是Jquery 1.3.2+。于是想到之前Jquery 1.4.4出的时候,看到其中的一些新特性相当眼热,把Jquery版本换成了1.4.4,难道是版本不符导致的?

于是把Jquery换成1.3.2,果然拖拽和调整尺寸功能都正常了。但是Jquery 1.3.2不支持动态绑定hover事件,而任务栏弹出窗口选择菜单的时候需要用到这个功能。如果用mouseover和mouseout来模拟的话,因为在绑定的元素中还有其他元素(比如应用程序的图片),会触发mouseout事件而导致弹出的菜单不停闪烁。如果是IE的话,菜单根本无法点选。头疼之下,想到Jquery 1.4就已经添加了动态绑定hover的功能。于是再换Jquery版本为1.4.1,问题解决。

由于Jquery的版本差异而导致的这个Bug,和Vista与XP之间的矛盾有些类似,Vista具有XP所没有的新功能,但是兼容性却比不上XP,一些旧的软件无法兼容,就好像JqueryUI在Jquery 1.4.4之中出现的问题一样。在网上搜索了一下,有关此问题的描述很少,希望对大家有所帮助

最后附上我做的半成品页面:http://www.baliqieluo.com/win.php

开发经验不足,望多指点……

posted @ 2011-04-03 00:15 巴里切罗 阅读(715) 评论(3) 编辑
  
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

昵称:巴里切罗
园龄:1年5个月
粉丝:2
关注:0

搜索

 
 

常用链接

随笔档案

最新评论