调用$(window).width()返回“内容宽度”不包括任何滚动条(因为内容超过元素的高度而造成浏览器自动添加的滚动条)。这个不同于用于CSS媒体查询的宽度,其包括滚动条的宽度。为了提供等同于CSS媒体查询概念的宽度,$(window).outerWidth()方法现在返回的宽度值包括滚动条宽度。这相当于DOM属性window.innerWidth。.outerHeight()同样适用。
https://github.com/jquery/jquery/issues/1729
Effects(效果) 更改:.show(), .hide(), and .toggle() 方法不考虑更多的样式表更改jQuery用来显示和隐藏元素的代码已被更新,更新后的代码只专注于内联样式,而不是计算样式,对于样式表的display值,应该尽可能增加以兼容响应式设计技巧(其中活动的样式表规则可以在设备改变方向(愚人码头注:横屏,竖屏)/窗口调整大小等时动态地改变)。因此,未关联元素不再被视为 hidden (隐藏),除非它们有内联样式display: none,同样的 ,从jQuery 3.0开始,.toggle()将不再区分关联和未关联元素。
此外,虽然.show()和类似的调用将继续强制迫使 被样式表规则隐藏的元素 可见,支持此功能会减慢所有显示/隐藏操作,并且不建议使用它。在这种情况下,确定设置哪个display(显示)值也已经被简化,当body级别规则按类型隐藏元素时,默认为“block”。
任何代码,希望隐藏的元素通过他们之前的 计算 display(显示)样式来重新显示,或未关联的元素处理为隐藏,应予以审查。团队创建了一个 与显示状态和显示/隐藏操作 所有可能相关的表格,以便简化非空内联样式的设置。
功能:动画现在使用requestAnimationFrame在支持requestAnimationFrame API的平台上,jQuery现在执行动画时使用这个API,对于老的浏览器(如IE9),它会使用之前的API。这将使得动画更流畅,更少的CPU处理时间 – 并在移动设备上更加省电。
jQuery几年前尝试使用了requestAnimationFrame,但与现在的代码存在严重的兼容性问题,所以我们不得不重新实现它。我们认为,我们已经在浏览器标签页在视图中不可见的时候,通过暂停动画解决了大部分的问题。仍然,任何依赖于动画的代码总是实时运行
是一个不切实际的假设。
现在requestAnimationFrame正在应用于动画,所以jQuery.fx.interval属性在大多数浏览器上被忽略。但是它仍然存在于jQuery 3.0中,并在一些浏览器(如IE9)中仍然需要使用,但将在未来的主要版本中会被删除。
弃用:附加 easing(缓动)函数参数通过.animate()调用的 easing(缓动)函数传递单个参数,完成的百分比。一些较旧的代码假设它传递派生自百分比的额外参数。这些额外参数可能不会出现在未来的主版本更新中。
一个老的 easing(缓动)方法的例子:
$.easing.easeInOutSine = function (x, t, b, c, d) { return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; };同样的 easing(缓动)方法重写:
$.easing.easeInOutSine = function (x) { return -0.5*(Math.cos(Math.PI*x) - 1); };https://github.com/jquery/api.jquery.com/issues/912
Event (事件) 更改:.load(), .unload(), 和 .error() 被移除这些方法是事件操作的快捷方式,但有几个API限制。事件.load()方法与ajax .load()方法冲突。.error()方法不能与window.onerror一起使用,因为这种方式的DOM方法已经被定义。如果您需要通过这些名称绑定事件,请使用.on()方法,例如 将$("img").load(fn)更改为$(img).on("load", fn)。
https://github.com/jquery/jquery/issues/2286
更改: .on(“ready”, fn) 被移除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()方法的无效输入