jQuery技术

jQuery 1.9升级指南 WEB前端开发(3)

字号+ 作者:H5之家 来源:H5之家 2017-08-18 14:08 我要评论( )

这里有一些例子,当在复选框上设置一个checked属性时正确的和不正确的使用方法;同样的规则也适用于disabled属性。请注意只有对象属性(property)在所有的浏览器始终反映和更新的复选框的当前状态;你很少会需要设

这里有一些例子,当在复选框上设置一个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中删除。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 小教程:自己创建一个jQuery长阴影插件

    小教程:自己创建一个jQuery长阴影插件

    2017-08-19 12:02

  • 标签:jQuery

    标签:jQuery

    2017-08-18 13:01

  • jQuery基础 (一) 样式篇

    jQuery基础 (一) 样式篇

    2017-08-18 12:01

  • jQuery标签选项卡切换代码

    jQuery标签选项卡切换代码

    2017-08-18 12:00

网友点评