jQuery不再支持名为 "ready" 的合成事件(可以与事件函数一起使用)。此事件容易出错,并在jQuery 1.8中弃用,因为它只会调用在文档准备好(document ready)之前附加的回调函数。用 $(fn) 替换任何用法,它可以可靠地工作。
https://github.com/jquery/jquery/issues/2264
更改: event.pageX和event.pageY 标准化删除jQuery 3.0官方支持的所有浏览器在其事件中都提供了pageX和pageY属性,所以jQuery代码从其他事件属性计算出来的这些值已被删除。此更改不不会影响主流浏览器,但也有这些属性不存在的可能性。如果碰到这种情况,请告诉我们,提交一个bug。
https://github.com/jquery/jquery/issues/3092
更改: jQuery.event.props 和 jQuery.event.fixHooks 被移除jQuery的事件处理性能提高,主要感谢事件属性管理的整改。主要的改进是,jQuery现在只计算或复制第一次访问的属性,而不是计算和复制它们。强制布局的属性有可能是一个真正的大赢家,事件处理程序甚至可能不需要。我们知道的最常见的用法是为鼠标事件添加属性,这不再是必要的,因为在jQuery 3.0中这些事件已经被支持。如果你仍然需要他们,jQuery Migrate插件提供了对这些属性的支持。相关但未出现在文档中 mouseHooks 和 keyHooks 列表也被删除。在定义新的API之前,团队有兴趣了解其他用例,如果你有使用常见,会有告诉我们。
https://github.com/jquery/jquery/issues/3103
https://github.com/jquery/jquery/issues/1746
https://learn.jquery.com/events/event-extensions/
更改:带有错误选择器的委托事件会立即抛出错误在jQuery 3.0之前,选择器在委托事件中直到第一次在元素上触发事件时才会被使用。这有时会导致难以调试的情况,错误脱离发生错误的时间和代码。现在,当事件被附加时,会检查选择器,并且如果它是无效的,则抛出错误。这被认为是一个突破性的变化,当附加事件从未触发时,唯一可能的原因是代码使用无效的选择器,并且这种情况下,以前从未抛出过错误。
https://github.com/jquery/jquery/issues/3071
弃用:.bind()和.delegate()方法五年前在jQuery 1.7中,我们介绍了用 .on() 方法附加事件处理程序。从3.0开始,旧的 .bind() , .unbind() , .delegate() 和 .undelegate() 方法已被标记为弃用,但仍然存在。API文档说明了如何使用 .on() 和 .off() 方法重写调用。
Manipulation(DOM操作) 更改:.wrapAll(function) 只调用一次 function在以前的版本中,当传递一个函数作为参数时, .wrapAll() 方法和 .wrap() 方法行为是完全一样的。这已经被更正;现在 .wrapAll(function) 只调用一次 function参数,使用函数调用得到的字符串结果包装整个集合。
https://github.com/jquery/jquery/issues/1843
Offset(偏移) 更改:.offset()方法的无效输入当使用 .offset() 方法时,jQuery集合中的第一个项必须是带有 getBoundingClientRect() 方法的DOM元素。(jQuery 3.0支持的所有浏览器都有这个API。)任何其他输入可能会导致jQuery抛出一个错误。还要注意,元素必须是可见的,并且在当前文档中(即,不脱离文档)。
https://github.com/jquery/jquery/issues/2115
https://github.com/jquery/jquery/issues/2114
Selector (选择器) 更改: :hidden 和 :visible 的行为如果一个元素,它有一个从DOM getClientRects() 方法返回的布局盒模型,那么这个元素被认为是可见的,即使该元素的高度和/或宽度为0。这意味着诸如 <br /> 或空的 <span> 之类没有高度的元素被认为是可见的。
https://github.com/jquery/jquery/issues/2227
https://github.com/jquery/jquery/issues/2604
更改: jQuery("#") and .find("#") 是无效无法如果一个选择器字符串只包含一个井号标记(hash-mark),jQuery 3.0将会抛出语法错误。在以前的版本中, $("#") 返回一个空集合,.find(“#”)会抛出一个错误。
https://github.com/jquery/jquery/pull/1682
功能:新增 jQuery.escapeSelector() 方法新增的 jQuery.escapeSelector( selector ) 方法接受选择器字符串并转义任何在CSS选择器中有特殊的含义字符。它本质上是 CSS工作组的 CSS.escape() 方法 的shim(垫片),它能在所有jQuery支持的浏览器上运行。此方法对于一个CSS类名或一个ID包含的字符在CSS中具有特殊含义的情况下非常有用,如点或分号。。
例如,如果页面上有一个id为”abc.def”的 元素,它不能用 $( "#abc.def" ) 选择,因为选择器被解析为“一个 id 为’abc’的元素,具有’def’样式类名“。但是,它可以用 $( "#" + $.escapeSelector( "abc.def" ) ) 来选择。
https://github.com/jquery/jquery/issues/1761
弃用: jQuery.expr[":"] 和 jQuery.expr.filtersThese two names for defining custom selectors through jQuery’s Sizzle selection engine are the same as jQuery.expr.pseudos, so we are deprecating the redundant names.
这两个名称 通过jQuery Sizzle选择器引擎 用于定义自定义选择器,与 jQuery.expr.pseudos 相同,因此我们不赞成使用冗余名称。
Serialize 更改:jQuery.param()不再将%20转换为加号在通过 jQuery.ajax() POST形式提交表单的时候, application/x-www-form-urlencoded 编码 规范 规定出现的任何空格都应该转换为 + 字符。以前,jQuery通过在 jQuery.param() 中进行转换来实现这一点。现在,这个转换已移至 jQuery.ajax() 。通过 jQuery.param() 编码的数据将空格转换为 %20 ,这样直接它可以与原生的 JavaScript encodeURIComponent() 和 decodeURIComponent() 方法兼容。
https://github.com/jquery/jquery/issues/2658
Traversing 更改: .andSelf() 被移除, 请使用 .addBack().andSelf() 方法在jQuery 1.8中已被标记为弃用,现在在3.0中被删除,赞成使用 .addBack() 方法,以为 .addBack() 方法更好地解释它的作用,并且还接受可选的选择器参数以过滤添加回来的内容。
翻译自: https://jquery.com/upgrade-guide/3.0/
本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程
主题: jQuery、浏览器、CSS、Java、、删除、iOS、服务器、Android、响应式设计、
分页:12
转载请注明
本文标题:jQuery 3.0 升级指南
本站链接:
分享请点击: