当使用.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选择器中有特殊的含义字符。它本质上是的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/