这里有一些例子,当在复选框上设置一个checked属性时正确的和不正确的使用方法;同样的规则也适用于disabled属性。请注意只有对象属性(property)在所有的浏览器始终反映和更新的复选框的当前状态;你很少会需要设置的属性(attribute)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // Correct if changing the attribute is desired $ // Correct for checking the checkbox $ // Correct if removing the attribute is desired $ // Correct for clearing the checkbox $
input元素的特性(property)和标签属性(attribute)是这个歧义的另一个例子。标签属性(attribute)一般体现读取HTML标记的值;属性反映了当前值。由于.val()方法是jQuery推荐的用来获取或设置表单元素的值的方式,这种混淆通常不会影响用户。
然而,当一个选择器,如”input[value=abc]” 被使用,它应该始终选择的value标签属性(attribute)并且用户对于对象属性(property)没有任何改变,例如,从这些选择器中键入到一个文本输入框。从jQuery 1.9开始,此行为正确并且一贯的。早期jQuery版本当应该使用标签属性(attribute),有时会使用他们的对象属性(property)。
jQuery Migrate(迁移)插件可以恢复原来的对象属性(property)和标签属性(attribute)规则。
译者注:具体查看API和
老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错误。
译者注:具体查看API
“hover”伪事件从1.9开始,事件名称字符串“hover”不再支持为“mouseenter mouseleave”的代名词缩写。允许应用程序绑定和触发自定义的”hover”事件。修改现有的代码是一个简单的查找/替换,并且jQuery Migrate(延迟)插件可以恢复”hover”伪事件。
译者注:具体查看API
jQuery对象上的.selector属性jQuery对象上过时的selector属性保留的目的是为了支持过时的.live()事件。在1.9中,jQuery不再试图在链方法上保留这个属性,因为1.9已经移除了.live()事件。不要使用jQuery对象的.selector属性。jQuery Migrate(迁移)插件也没支持这个属性。
译者注:具体查看API
jQuery.attr()1.9版移除了jQuery.attr(elem, name, value, pass)方法,用jQuery Migrate(迁移)插件可恢复这个方法。
jQuery.ajax返回一个空字符串的JSON结果1.9之前,一个AJAX调用预期返回JSON或JSONP的数据类型,当返回值是一个空字符串时会被认为是成功的状态,但返回一个null给success处理程序或承诺(promise)。从1.9开始,JSON数据返回一个空字符串被认为是畸形的JSON(因为它本来就是);这将抛出一个错误。这种情况下,使用error(错误)处理程序捕获。
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,不被改变。
译者注:具体查看API
.data(“events”)1.9以前,如果没有其他的代码定义一个名称为“events”的数据元素,.data(“events”) 可以用来检索一个元素上,jQuery未公开的内部事件数据结构。这种特殊的情况,在1.9中已被删除。没有公共的接口来获取这个内部数据结构,
它是不公开的。jQuery Migrate(迁移)插件可以恢复原来的行为。
译者注:具体查看API
移除Event对象的部分属性Event对象的attrChange、attrName、realtedNote和srcElement属性自1.7版因无法跨浏览器已被宣告过时;从jQuery 1.9开始,它们不再被复制到Event对象传递给事件处理程序。在jQuery所有版本中,这些属性依然可以在支持他们的浏览器上通过event.orginalEvent存取,以取代event。jQuery Migrate(迁移)插件在Event对象有加回了这些属性。
译者注:具体查看API
API方法未公开的参数1.9之前,几个API方法未公开改变了他们的行为的参数,并存在潜在的意外误用。这些参数已经被删除。受影响的方法包括jQuery.data(),jQuery.removeData(),和jQuery.attr()。jQuery Migrate(迁移)插件也不支持的代码。
其他未公开的属性和方法下面的内部属性和方法从未被收入到文档,并已在1.9中删除。