| jQuery1.3更新体验 | |
[ ]2009年1月18日 21:41:52 |
|
| 收藏到: | 字号:增大 正常 减小 |
这两天把RainBlog的的jQuery库升级到了最新的1.3版,全新的1.3采用了新的技术引擎,在执行效率与动画的流畅度上都有明显的提升,这里就不班门弄斧多废话了。(关于具体性能提升以及相关更新情况可以看小飞的《jQuery 1.3 正式版发布公告》、《jQuery 1.3 中文文档发布》)下面具体说一下RainBlog在1.3库下更新的具体情况,以及几个新方法的体验和碰到的一些问题。 RainBlog这次更新最大特点是采用了更加灵活的布局加载功能。早期的版本是采用静态重构的方式来完成页面架构的。也就是说每次保存首页样式布局后,系统会根据保存的数据来在服务器端重构一张静态的html页面来保存大体的框架,这显然是不具备纯Ajax的灵活特性。这次更新采用了多框架克隆技术,利用一个动态的js脚本首先在服务器端数据获取样式布局的数据,然后再在客户端逐个复制项目卡原型,并依次为各自的栏目注入各有的事件,从而完成更专业灵活的样式布局。这里顺便介绍下两个很有特色的jQuery1.3新方法。 1.live(type,fn):这是个很强大的事件委派方法,类似早期的bind()方法,可以为所有匹配元素绑定一个事件处理函数,也能绑定自定义事件。但与传统bind()不同的是,live()不仅可以为当前元素绑定事件也可以为将来会匹配的元素绑定事件。 我们常常会在Ajax开发中为页面重新构造新元素,而传统的bind()方法却不能为新构造出来的元素自动绑定事件,这意味着每次创建元素都需要来绑定一次事件,可怕的是不仅麻烦还很容易不惊异间为一个元素多次绑定事件。而新的live()方法会自动为DOM重构的匹配元素绑定相应事件,可以说live是一个很实用的方法。 2.closest([expr]):这个方法会首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,一层一层往上,直到找到匹配选择器的元素。如果什么都没找到则返回一个空的jQuery对象。而早期的parent()只能筛选其父带元素,如果跨代查找就只能使用parents()了,而parents()是会自动查找所用祖先代元素,这样不仅效率低下而且往往需要使用判断语句来控制查找范围。而closest()使得类似查找变得很简单,可以说closest()是一个很智能的方法。 jQuery其中一个最大的魅力就是具有极好的跨平台性,但仍有很多不完美的地方。比如
在IE与FF中$('a[target!="_blank"]')会出现两种不同的结果,IE会选b c,而FF只会选c。这个问题可以这么理解,在FF里面,没有属性就根本不匹配。而在IE里,A在没设置target属性的情况下默认是target="_self",所以会满足$('a[target!="_blank"]')。 这也算是jQuery一个不算BUG的BUG吧。 确实,JavaScript的世界从来都没有像现在这么精彩过。很忙,很遗憾没有帮小飞完成翻译,仅仅是做了些新版本的体验测试,在此感谢小飞提供1.3中文API,感谢一起探讨、相互交流的热心朋友! |
|
| 评论[4]┆阅读[473]┆引用┆栏目:Open Source[7]┆Tags:Ajax[4] RainBlog[9] jQuery[10] | |
| 文章评论[] | |