懂英文的移步:http://jquery.com/upgrade-guide/1.9/
1,.toggle(function, function, … ) 方法删除
这个方法绑定两个或多个处理程序到匹配的元素,用来执行交替的点击事件
注意显示或隐藏匹配元素.toggle( )方法没有被删除
2,jQuery.browser() 方法删除
特征检测,请使用Modernizr库
3,.live() 方法移除
使用.on()方法来替代
例如:$(“a.foo”).live(“click”, fn) =》 $(document).on(“click”, “a.foo”, fn)
4,.die() 方法移除
使用. off()方法来替代
例如:$(“a.foo”).die(“click”) =》 $(document).off(“click”, “a.foo”)
5,jQuery.sub() 方法移除
有两个具体使用jQuery.sub创建jQuery副本的案例。
第一种情况是希望重写 jQuery 的方法,而不想破坏原始的方法。
另一种情况是想为 jQuery 插件做进一步的封装或进行基本的命名空间。
6,.add() 方法修改
.add()方法返回的结果总是按照节点在document(文档)中的顺序排列。在1.9之前,如果上下文或输入的集合中任何一个以脱离文档的节点(未在文档中)开始,使用.add()方法节点不会按照document(文档)中的顺序排序。现在,返回的节点按照文档中的顺序排序,并且脱离文档的节点被放置在集合的末尾
7,.addBack(selector) 替换 .andSelf()
8,.appendTo, .insertBefore, .insertAfter, 和 .replaceAll
在1.9中,这些方法总是返回一个新的集合,使他们可以使用的链式调用和.end()方法。1.9之前,只有当他们是一个单独的目标元素时,他们将返回旧的集合。需要注意的是这些方法总是返回所有元素附加到目标元素的聚合集合。如果没有元素被目标选择器选中(例如,$(elements).appendTo(“#not_found”))那么返回的集合是空的。
9,AJAX 事件需要绑定到document
$("#status").ajaxStart(function(){ $(this).text("Ajax started"); }); ==>
$(document).ajaxStart(function(){ $("#status").text("Ajax started"); });
10, .trigger() “click” 事件时Checkbox/radio 的状态
当用户点击一个复选框或单选按钮时,如果节点上没调用event.preventDefault(),事件处理程序中会根据复选框或单选按的当前状态判断并且得到它的新状态。因此,例如,如果用户点击一个未选中的checkbox,事件处理程序将选中(checked)这个checkbox。1.9之前,.trigger(“click”) 或 .click()任何一个将触发一个合成事件,根据用户点击行为,我们可以看到checkbox与实际checked属性相反的状态。在1.9中修复了这个bug,用户行为会得到相应的状态。
11,focus事件触发顺序
当用户再表单元素上点击或者按tab键,使元素获取焦点,浏览器首先在焦点元素上触发一个blur(失去焦点)事件,然后在新元素上触发一个focus(获取焦点)事件。在1.9之前,使用.trigger(“focus”) 或 .focus() 绑定一个focus事件,新元素将触发一个focus事件,然后触发先前焦点元素的blur事件,1.9已修正此问题。
注意:所有版本的Internet Explorer(6-10)触发焦点事件是异步的。当你在IE中使用.trigger(“focus”),jQuery无法“预知”异步focus事件以后会发生什么。所以它总是会触发一个自己的focus事件,以确保功能正常。这可能会造成focus事件重覆执行,建议改用DOM内建的focus()较单纯,例如: $(“#boo”).get(0).focus()。
12,jQuery(htmlString)与jQuery(selectorString)
在1.9以前,如果一个字符串中有任何HTML标签,那么这个字符串将被认为是一个HTML字符串。这有可能造成意外的代码执行和拒绝有效的选择器字符串。 1.9开始,以一个小于号(“<”)字符开头的字符串才被认为是HTML字符串。Migrate(延迟)插件可以恢复到1.9以前的行为。
13,.data()中名称包含点(“.”)改变
.data()有一个监控值的设置和获取,1.9中被移除。这已经影响到了包含点的数据名称的解析。从1.9开始,调用 .data(“abc.def”)只能通过名称为“abc.def”检索数据,原本还可以通过“abc”取得的技巧已被取消。需要注意的是较低级别的jQuery.data()方法不支持事件,所以它并没有改变。
14,脱离文档节点在jQuery集合中的顺序
从1.9开始,在文档中的连接节点都总是按文档顺序放置在集合的开头,脱离文档节点被放置在他们的后面
15,加载并且执行HTML内容中的scripts
在1.9之前,任何接受HTML字符串的方法(例如,$()、.append()、.wrap())会执行HTML字符串中所包含的Script,并且将它们从文档中移除,以防止他们再次被执行。在特殊情况下,使用这些方法一个脚本可能会被移除并重新插入到文档中,比如.wrap()。从1.9开始,插入到文档的脚本会执行,但仍然保留在文档中并且标记为已经被执行过的,这样它们就不会被再次执行,即使它们被删除并重新插入。
16,.attr() 和 .prop()对比
jQuery 1.6 介绍了.prop()方法设置或获取节点上的对象属性(property),并且不建议使用.attr()方法设置对象属性(property)。然而版本一直到1.9,在某些特殊情况下继续支持使用.attr()方法。当选择器是用来区分标签属性(attributes)和对象属性(properties)时,这种行为在向后兼容的命名方面会引起混乱。
例如,一个复选框的布尔标签属性(attributes),如checked和disabled受到这种变化的影响。”input[checked]“的正确行为是选择有checked属性的复选框,不管是它的字符串值,还是它当前的状态。与此相反, “input:checked” 选择当前checked属性的布尔值(true或false)为true的复选框,例如当用户单击复选框时,会受到影响。1.9之前版本这些选择器有时不选择正确的节点。
17,老IE中的$(“input”).attr(“type”, newValue)
在1.9版之前, 在所有的浏览器中,任何企图设置一个input或者button元素的类型(type属性),jQuery都将抛出一个异常。这样做时为了符合最低标准的兼容;因为如果你试图改变input元素的类型,IE6/7/8抛出一个错误。从 jQuery 1.9开始,如果浏览器允许的话,我们允许您设置元素的类型。但是,你需要知道自己的代码,在老IE(IE6/7/8)下试图做到这一点还是会抛出一个错误。当你试图设置类型属性时,jQuery Migrate(迁移)插件会发出警告,但不会抛出一个JavaScript错误。
18,“hover”伪事件
从1.9开始,事件名称字符串“hover”不再支持为“mouseenter mouseleave”的代名词缩写。允许应用程序绑定和触发自定义的”hover”事件。
19,jQuery对象上的.selector属性
jQuery对象上过时的selector属性保留的目的是为了支持过时的.live()事件。
20,jQuery.attr()
1.9版移除了jQuery.attr(elem, name, value, pass)方法
注意:不是.attr()
21,jQuery.ajax返回一个空字符串的JSON结果
1.9之前,一个AJAX调用预期返回JSON或JSONP的数据类型,当返回值是一个空字符串时会被认为是成功的状态,但返回一个null给success处理程序或承诺(promise)。从1.9开始,JSON数据返回一个空字符串被认为是畸形的JSON(因为它本来就是);这将抛出一个错误。这种情况下,使用error(错误)处理程序捕获。
22,jQuery.proxy()
1.9版前,$.proxy(null, fn)、$.proxy(undefined, fn)的this会指向window,而$.proxy(false, fn)的this则指向new Boolean(false) ;1.9起若context传入null/undefined/false,函数的this会维持原先context,不被改变。
23,.data(“events”)
1.9以前,如果没有其他的代码定义一个名称为“events”的数据元素,.data(“events”) 可以用来检索一个元素上,jQuery未公开的内部事件数据结构。这种特殊的情况,在1.9中已被删除。没有公共的接口来获取这个内部数据结构。