1、jQuery 1.4在jQuery.param方法里加入了嵌入参数序列化的支持,借用了PHP编程里兴起的,而后又被Ruby on Rails推广开来的方式。举例来说,foo: bar, baz 会被序列化为 “foo=bar&foo=baz”.在jQuery 1.3版里, foo: 曾被序列化为 “foo=bar&foo=baz”. 但是,这样做没用办法将只含有一个元素的阵列编码。如果你需要旧的序列化方式,你可以设置传统Ajax设置来进行切换。(使用jQuery.ajaxSettings.traditional进行全局切换,或者根据情况单独切换。总共有3种方式可以切换到旧的序列化方式:/ 全局
2、改变序列化方式 (使用旧的)jQuery.ajaxSettings.traditional = true;/ 指定情况使用旧的序列化方式jQuery.param( stuff, true );/ 针对一个单独的Ajax请求使用旧的序列化方式$.ajax( data: stuff, traditional: true );更多信息参见: jQuery.param() 文档, jQuery.ajax() 文档, Commit, CodeJSON和脚本类型通过”content-type”自动识别。 (jQuery.ajax 文档, Commit 1, Commit 2)如果一个Ajax请求的回复的媒
3、体类型是JSON(application/json), dataType默认设为”json”(如果dataType没有被指明)。另外,如果回复的媒体类型是 Javascript(application/javascript), dataType默认设为”script”(同样,如果dataType没有明确指明), 这种情况下,脚本会自动运行。加入了Etag的支持 (jQuery.ajax() 文档, Commit)默认设置下, jQuery会忽略Ajax请求的”Last-Modified”页头。这样做是为了忽略浏览器的缓存。设置ifModified:true就可以使 jQuery使用可用的缓存。
4、jQuery1.4还会发出”If-None-Match”的页头如果你设置了ifModified选项。严格JSON模式,本地的JSON.parse方法 (jQuery.ajax() 文档, Commit 1, Commit 2, Commit 3)jQuery 1.3和以前的版本曾使用Javascript的eval对引入的JSON解析。1.4版则会使用本地的JSON解析器,前提是如果有本地的解析器可用。它也会对引入的JSON进行校验。所以在jQuery.getJSON方法里,或当一个Ajax请求的dataType是”json”的时候,jQuery会拒绝不合标准的JSON(例如foo: )。序列化
5、HTML5的元素 (jQuery.param() 文档, Commit)新的HTML5输入方法 (比如datetime和range)在序列化.serialize()一个表单的时候会被包括在内。Ajax请求的环境 (jQuery.ajax() 文档, Commit)你可以附加一个”环境”到Ajax请求上,所有的回调函数里都会拥有同样的”环境”设置(这样可以简化你的代码,尽可能避免使用闭合,或是其他对象)。jQuery.ajax( url:test.html, context: document.body, success: function() jQuery(this).addClass(don
6、e 请求成功回调函数的第三个参数会被设为原始的XHR对象 (jQuery.ajax() 文档, Commit)所有的Ajax请求的成功回调函数现在都会收到原始的XMLHttpRequest对象,作为第三个参数。之前这个XHR对象只能通过$.ajax一类方法的返回值来获取。明确设置”Content-Type” (jQuery.ajax() 文档, Commit)在1.3版,如果没有实际数据发送,jQuery.ajax的contentType会被忽略。1.4版里,contentType将总是和请求一同发送。这修复了某些后台凭靠”Content-Type”页头判断回复类别所造成的问题。明确设置JSO
7、NP回调函数的名字 (jQuery.ajax 文档, Commit)你可以使用jQuery.ajax()方法的jsonpCallback选项,通过名字来指定JSONP的回调函数。防止启动前跨域XHR (Commit)跨域Ajax(针对提供支持的浏览器)将更易用,因为默认设置下,启动前XHR被阻止了。(TODO)jQuery.ajax()现在使用”onreadystatechange”事件替换了计时器 (Commit)使用”onreadystatechange”替换了轮流探询,Ajax请求现在将使用更少的资源元素属性 (Attributes).css()和.attr() 的性能被优化了。).at
8、tr(alt, function(index, value) return Please, + value;.val( Function ) (.val() 文档)input class=food type=text data-index=01jQuery(input:text.food).hide();ul class=sortableliPeanut ButterJelly .sortable() .bind(endsort, function() $(:).val(function() return $(ul.sortable li:eq( + $(this).attr(data-ind
9、ex) + ).text(); );text和CDATAHTML元素也支持.text()方法了 (.text() 文档, Commit)核心 (Core)快捷元素创建 (jQuery() 文档, Commit)现在当你需要使用jQuery函数创建一个元素的时候,你可以同时附递一个对象来指定属性值和事件:, id:foo css: height:50px width: color:blue backgroundColor:#ccc , click: function() $(this).css(backgroundColorred).appendTo(body对象里的键值的名字与相关的jQuer
10、y的方法的名字是对应的,对象的值会被作为参数传递给jQuery的方法。譬如$(alink, css:background:);相当于$().css(background.eq(-N), .get(-N) (负指数) (.eq() 文档, .get() 文档, Commit)你现在可以在.get()和.eq()方法里使用负数。譬如,你要选择倒数第2个div元素,或者是倒数第2个DOM对象:$(div).eq(-2);).get(-2);新的.first()和.last()方法 (.first() 文档, .last() 文档, Commit)方便起见, 新增的.first()和.last()方法
11、等同于.eq(0)和.eq(-1).新的.toArray()方法 (.toArray() 文档, Commit).get()方法自始就是从jQuery集合里返回一个阵列。为了能够更明确, 你可以用.toArray()来达到一样的效果。这里应该是为了以后的版本留出空间,譬如以后可能会加入.toList()方法,到时候就会易于区分。) 不过,和.get()不一样的是,.toArray()不接受参数。jQuery()返回一个空集 (jQuery() 文档, Commit)在jQuery 1.3中,jQuery()方法返回仅包括document的jQuery集合。这个可以用来创建一个空集,然后动态加入
12、一些元素。注: jQuery().ready()方式在1.4中依然有效,但是被指示陈旧了。请使用jQuery(document).ready()或者jQuery(function()。jQuery(“TAG”) (Element Selector 文档, Commit)当使用单个标签名字的时候jQuery会使用更快捷的路径。jQuery(“”), jQuery(“”) 和 jQuery(“”) (jQuery() 文档, Commit)现在这三个方法都使用同一个代码路径了(document.createElement), 来优化jQuery()的性能。注意,如果你指定了属性,将会使用浏览器本身
13、的语法分析(通过设置innerHTML)。样式 (CSS).css()方法在性能是以前的2倍。.addClass(), .removeClass(), 和 .hasClass()这几个方法在性能上是以前的3倍.toggleClass()可以切换多个css类了 (.toggleClass() 文档, Commit)你可以通过.toggleClass()调用多个css类的名字来切换他们。).toggleClass(current active数据.data()返回对象, .data(Object)设置对象 (.data() 文档, Commit 1, Commit 2)有时候你可能需要在一个元素上
14、附加一个复杂的对象。一个常见的例子是你需要从一个元素身上复制所有的数据到令一个元素上。在jQuery 1.4里, 不使用任何参数调用.data()时,.data会返回一个复杂对象。 包含所有键-值对的对象。) 调用.data(Object) 则会设置这个对象。注意这个对象还包括了元素上绑定的事件,所以用的时候要小心。除非需要, 不然不会创建数据缓存。 (Commit 1, Commit 2, Commit 3)jQuery使用一个独特的自定义属性来获取特定元素上附加的数据。当查找数据,但是没有新加的数据的时候,jQuery会尽量避免创建这个自定义属性。这样可能会提高性能,同时还会在这种情况下避
15、免污染DOM。效果 (Effects)单个属性缓进缓出 (Per-property Easing 文档, Commit)除了能够给一个动态效果指定缓进出函数外,你现在可以指定每个属性的缓进出函数了。James Padolsey的blog上有更进一步的信息和演示。#clickme).click(function() ).animate(+=200pxswing,+=50pxlinear , 2000, function() $(this).after(Animation complete. anniedaveysteviediv).unwrap();domManip方法里的缓存 (commit)
16、jQuery会将jQuery()和.after()一类方法创建的节点记入缓存。这样, 对于利用这些方法, 使用字符串进行DOM操作的页面,性能将有极大的提高。无连接的节点间的before, after, replaceWith操作 (commit)现在你可以对还没有放置到DOM Tree上的节点进行before, after, 和replaceWith的操作了。意味着你可以先对节点进行复杂的操作, 待完成后再放到合适的DOM位置上。这样也能尽量避免操作过程中造成重新排版。).before(Hello).appendTo(.clone(true) 也会复制关联数据 (clone 文档, comm
17、it)1.3版中, .clone(true)虽然也是深度复制, 但是没有复制关联的数据。1.4版里,它则会复制数据, 同时还包括所有的事件。这点上和jQuery.extend在语义想同的, 所以普通对象和阵列会被复制, 但是自定义的对象则不会。位移 (Offset).offset( coords | Function ) (.offset() 文档, commit)现在可以设置元素的位移了! 和所有的设置函数一样, offset也可以接受一个函数作为第二个参数。队列 (Queueing)队列经历了一次大修, 使用队列会比使用默认的fx更易掌握。新的 .delay() 方法 (.delay()
18、文档, commit).delay()方法会根据参数滞后若干毫秒执行队列里剩下的对象。默认的它会使用”fx”队列。但你可以选择性的通过delay方法的第二个参数选择其他队列。每个队列都以一个名字识别。).fadeIn().delay(4000).fadeOut();队列里的next (.queue() 文档, commit)jQuery 1.4版里, 当队列里的一个函数被调用的时候,第一个参数会被设为另一个函数。当后者被调用的时候, 会自动排除队列里的下一个对象, 以此来推动队列到下一步。).queue(ajax, function(next) var self = this; jQuery.getJSON(/update, function(json) $(self).html(json.text); next(); ;).queue( $(this).fadeIn();.clearQueue() (clearQueue 文档, commit)队列可以被清空了。这个方法会移除队列里所有未执行的函数, 但不会移除正在运行的函数。无参数的情况下调用.clearQueue()方法将会清空默认的”fx”队列。选择符 (Selectors)“#id p”效率更高 (commit)所有以ID开头的选择符都得到了优化, 能够在瞬间得到返回值。所
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1