jQuery 1.4特性介绍

来源:互联网 发布:java如何定义全局变量 编辑:程序博客网 时间:2024/05/19 01:09

 

1月14日jquery发布了1.4版本,新版本有较大变化,但接口基本保持向下兼容。1.4的gzipped压缩版23K,压缩代码69K,为未压缩版 154K,体积略有增加。1.4有些不兼容1.3的地方,会引起原来的应用出错。使用1.4测试了下i.jrj.com.cn首页,好友关注人的ajax 请求都没出来。虽然1.4提供了兼容1.3版本的插件http://code.jquery.com/jquery.compat-1.3.js,但建议不要在现有的应用中使用,大家可以在新项目或项目改版升级中使用1.4。
我摘选了一些常用API的新特性,大家先睹为快,想更深入学习的可以看看jquery1.4新特性介绍和API。

jquery 1.4新特性介绍:http://jquery14.com/day-01#backwards
jquery API:http://api.jquery.com/
 
jquery1.4更新内容:
 
1. 1.4进行内部重构,改写了大多数常用方法,提升了常用方法的性能。
 
2. 扩展了下面的方法,增加setter函数作为参数。这些方法的接口向下兼容。
 .css(), .attr(), .val(), .html(), .text(), .append(), .prepend(), .before(), .after(), .replaceWith(), .wrap(), .wrapInner(), .offset(), .addClass(), .removeClass(), and .toggleClass().
 例如:
 $('div').html(function(html){    return html.replace(/&/gi,'<span class="amp">&</span>');  });
 
3. Ajax改动比较大,使用1.4测试了下i.jrj.com.cn首页,ajax请求都没出来。
 
  1) 增加了参数的数组序列化 {foo: ["bar", "baz"]}序列化为 “foo[]=bar&foo[]=baz”,而不是以前的foo=bar&foo=baz

 
   三种方法使用原来的序列化:
 
  // Enables for all serialization
  jQuery.ajaxSettings.traditional = true;
  
  // Enables for a single serialization
  jQuery.param( stuff, true );
  
  // Enables for a single Ajax requeset
  $.ajax({ data: stuff, traditional: true });
 
 2) 支持ETag, jq1.4使用ETag判断ifModified,jq1.3使用Last-Modified 判断
 
 3) 根据content-type自动检测dataType是 JSON 或者 script
 
 4) 加强JSON格式检测,不标准的{foo : "bar"}会被拒绝,应使用{"foo" : "bar"}
 
 5) 可以明确指定JSONP回调函数的name
 
 6) Success callback receives XHR object as third argument
 
 7) jQuery.ajax() is now using onreadystatechange instead of a timer
 
 
4. 核心的jQuery()

  1) 使用属性创建单个元素,这样创建元素就方便多了
 
  2) jQuery()返回空jQuery对象,1.3返回jQuery(document)。所以1.4不推荐使用jQuery().ready(),可以使用jQuery(document).ready()或jQuery(function(){})
 
5. event
 
  1) 新增事件代理 jQuery.proxy()
 
 2) 新增多事件绑定
 
 3) 增加focusin focusout事件方法
 
6. 不兼容以前版本的地方,可能会发生错误。
 
1) add()不再把选择器的匹配结果直接连接起来,1.4把匹配结果合并按照其在dom中的顺序排序
 
例如:页面上元素顺序是,<p>Added this... (notice no border)</p><div></div>
$("div").css("border", "2px solid red").add("p").css("background", "yellow")
jq1.3的结果是[<div></div>,<p>Added this... (notice no border)</p>],jq1.4的结果是[<p>Added this... (notice no border)</p>,<div></div>]
 
2) clone返回带data数据和event时间的元素
 
3) jQuery.data(elem)返回元素对象,不再返回元素id
 
4) jQuery()不转成jQuery(document)
 
5) val(“…”)通过value选中元素
 
6) jQuery.browser.version返回浏览器的引擎版本号
 
7) 加强json标准检查
 
8) jQuery.param()默认以PHP/Rails形式序列化
 
9) jQuery.extend(true, …) 不再扩展非原生对象和数组。
 
10) 如果Ajax request未指定datatye且返回text/javascript,脚本会自动执行。
 
11) Ajax的ifModified使用ETag检测,jq1.3使用Last-Modified判断