jQuery 1.8 Beta 1:看看即将到来(和消失)的功能!

发布日期: 作者:

各位 jQuery 用户大家好!我们已经有一段时间没有跟大家联系了,但我们一直都在努力工作。jQuery 核心团队一直在埋头开发 jQuery 1.8,现在我们的第一个测试版发布了!您可以从 jQuery CDN 获取代码

在您当前的 jQuery 代码上试一试,并告诉我们它是否符合您的预期。如果您遇到问题,请提交 Bug,包含测试用例,并确保您提到您正在针对 jQuery 1.8 Beta 1 进行测试。

本月晚些时候,在旧金山举行的jQuery 大会上,将会有更多激动人心的 jQuery 新闻发布,之后还会有博客文章。

jQuery 现在为互联网上大约一半的主要网站提供动力;这是一个巨大的成功,但我们并没有止步不前。在过去的六年里,网络浏览器及其运行的设备经历了惊人的转变。网络开发流程正在不断发展,以适应正在发生的改变。作为回应,jQuery 也在不断发展。

这种演变的一部分不仅是了解要添加什么,还要了解要删除什么。jQuery 的插件架构使开发人员能够轻松地扩展 jQuery Core 提供的功能,如果这对于他们的需求有意义的话。因此,对核心添加的功能设置了相当高的标准。我们不想为不需要特定功能的人创建大小、复杂度或性能方面的负担。

同样,我们对人们使用 jQuery 的方式有足够的经验,知道有些功能最初看起来是个好主意,结果却不是那么好。与其永远保留这些功能,我们希望最终将它们删除。事实上,我们希望更容易地创建 jQuery 的版本,该版本不包含您不需要或不想要的东西,特别是对于空间可能很宝贵的移动环境。

考虑到这一点,以下是我们计划在 jQuery 1.8 中进行的一些更改,这些更改将使其成为所有基于 HTML 的网页和应用程序(无论其平台如何)的更好基础

模块化

从 jQuery 1.8 开始,您可以构建自定义版本的 jQuery,如果不需要其功能,则可以排除一个或多个模块。此功能得益于我们新的基于 Ben Alman 的出色grunt 工具的构建系统。要构建您自己的自定义版本,请从 Github 设置 jQuery 核心仓库的副本,并使用 grunt 命令行选项排除模块。有关更多信息,请参阅README 文件

您目前可以排除的模块包括 ajax、css、dimensions、effects 和 offset。例如,如果您的应用程序仅使用样式表和通过类进行的 CSS 动画来控制页面上项目的可见性和大小,则可以构建一个不包含 css、dimensions、effects 和 offset 模块的版本。如果您不需要任何可选模块,您自定义构建的 jQuery 大小将约为 21KB(压缩并 gzip 压缩)。

不过请放心,构建您自己的 jQuery 是完全可选的。jQuery 一直以来都是,并且将继续以压缩和未压缩的形式作为单个文件进行分发,并可在 CDN 上使用。我们仍然预计这将是大多数 jQuery 开发人员采用的方式,因为它简单且无痛。例如,当您包含一个您没有编写的 jQuery 插件时,使用完整版本的 jQuery 可以确保您不会受到插件内部潜藏的某些依赖项的影响。

供应商前缀 CSS 属性

W3C 在提出为尚未标准化的 CSS 功能使用供应商前缀的想法时,初衷是好的,但结果却不是童话故事的结局。Web 开发人员面临着在样式表中包含所有供应商前缀属性名称的噩梦。jQuery 1.8 有点缓解了这种痛苦。我们自动获取非前缀属性名称,并为当前浏览器生成相应的供应商前缀,因此您无需手动操作。例如,在 Chrome 上,jQuery 调用 $("#myscroll").css("marquee-direction", "backwards") 将把 CSS 设置为 -webkit-marquee-direction: backwards

动画(效果)

在过去几年中,我们的动画代码变得杂乱无章,在 1.8 版本中,我们希望我们已经将这个“野兽”控制住了。但这不仅仅是清理工作;还有几个扩展点,使添加或修改动画变得更加容易。目前,对于新功能只有初步文档,但在第一个测试版中,我们的主要重点将确保任何现有的动画代码都能正常工作。

如今,浏览器在提供高效动画方面做得越来越好,尤其是使用 CSS 过渡。但仍然有很多用户没有使用支持基于 CSS 的动画的浏览器。使用 jQuery 1.8,您可以同时获得两全其美。如果您需要支持没有内置动画的旧版浏览器,新的 $.Animation 提供了一个坚实的基础,并修复了以前版本的许多错误。如果您只需要针对现代浏览器及其原生支持的动画,您可以这样做,并完全排除动画模块。

Sizzle CSS 选择器引擎

jQuery 的选择器引擎在 1.8 版本中进行了重大重写。这次重写最显著的优势是选择器匹配的广泛性能改进,以及对最常见选择器的改进快捷方式。

此外,Sizzle 处理了更多边缘情况和错误,包括对多个组合器(~ > +)的改进支持,以及更好地检测 querySelectorAll 中的浏览器错误。请参阅以下选择器模块中的错误列表,了解完整的列表。

XSS 防护

根据设计,$() 方法可以创建 HTML 元素,如果它传递了一个包含内联脚本的 <script> 标签或一个 src 属性,则会运行脚本。开发人员有时会忘记这一点,将来自不受信任来源(如 URL 或用户输入)的字符串传递给 jQuery。在这些情况下,有人可能将脚本注入页面,从而窃取 cookie 或以某种方式危害页面。

这些跨站点脚本 (XSS) 攻击在许多网站上很常见,无论它们是否使用 jQuery,但我们希望确保 jQuery 不会加剧这个问题。在 jQuery 1.9(紧随 1.8 之后的下一个版本)中,我们将加强 $() 方法的“看起来像 HTML”规则。字符串仅在第一个字符为小于号时才会被视为 HTML,否则将假定它是一个 CSS 选择器。

为了进一步防止无意中注入脚本,jQuery 1.8 引入了一种新方法:$.parseHTML。它允许您指定字符串作为 HTML,并知道它们将被解析为 HTML,而 $() 无法做到这一点,因为它也会将字符串解释为选择器。它还提供了一种将 HTML 解析为 DOM 片段并控制 HTML 可能包含的任何脚本执行的方法。这在受内容安全策略 (CSP) 控制的 JavaScript 环境中尤为重要,因为注入的脚本可能会导致安全警告或异常。

对于比创建单个元素更复杂的情况(例如,$("<p/>")),尤其是对于从外部数据构建字符串的情况,我们强烈建议您使用 $.parseHTML。从 jQuery 1.9 开始,由于这些更严格的规则,一些 HTML 字符串将不再被 $() 识别为 HTML。

春季大扫除

在 jQuery 1.8 中,我们还将弃用并删除“绊脚石”:效率低下、效果不佳或不建议使用的 API 和功能。我们意识到,仍然存在需要这些功能的现有 jQuery 代码。为了提供低麻烦的未来升级路径,在删除这些弃用项后,我们将在兼容性插件中提供许多弃用项。您可以在其GitHub 仓库 上关注兼容性插件的开发。

下面以“弃用”或“删除”开头的工单讲述了所有更改的细节,但以下是一些值得特别注意的更改

$.browser自 jQuery 1.4 以来,我们一直在宣传通过用户代理字符串进行浏览器检测是一个坏主意。然而,我们通过继续提供 $.browser 来助长了这种不良做法。从 jQuery 1.9 开始,我们将完全删除它,您需要使用 1.9 兼容性插件。如果您的代码尚未摆脱浏览器检测,请查看Modernizr,它提供了一套非常全面的功能检测,您可以使用它们。当然,您也可以直接读取 navigator.userAgent 字符串中的线索,没有什么可以阻止您这样做,除了您的良心。

$.sub此方法是在 jQuery 1.5 中引入的,但事实证明它不够有用或健壮,不足以证明它继续留在核心库中。它将在 jQuery 1.9 中迁移到兼容性插件。

全局 ajax 事件:$.ajax 触发的事件(如 ajaxStart)目前可以附加到任何元素,即使是根本不在文档中的元素!这会创建一个低效的特殊情况,因此我们将在 1.8 中弃用该行为。从 1.9 开始,ajax 事件应仅附加在 document 上。

还有更多…

1.8 版本中还有许多其他更改,也许最简单的方法是查看我们正在解决的 issue 列表,其中包括功能和错误修复。以下是对 1.8 版本的快照,但这不是一成不变的。我们欢迎您就特定问题或 jQuery 的总体方向提供反馈!

jQuery 1.8 Beta 1 更改日志

1.8 Beta 1 版本的当前更改日志。

Ajax

  • #8205:JSONP 随机结果会导致 IE8 中发生内存泄漏
  • #8653:jQuery.param 在查询字符串中输出“null”和“undefined”
  • #10285:evalScript rcleanScript 替换在 IE8 中失败
  • #10524:jQuery.fn.load 不会将 data 参数与 jQuery.ajaxSetup 合并
  • #10944:$.ajax 并不总是返回一个实现 Promise 接口的对象
  • #11013:弃用/删除 $.ajax 中的 async 选项
  • #11402:evalScript 函数在 IE 中失败,并出现错误 error 80020101
  • #11743:jQuery 在 $.appendTo() 中的脚本标签 ajax 请求期间静默忽略错误
  • #11778:缓存的 XHR 请求仍应异步解析

属性

  • #11153:jQuery 1.7 在 IE 8 中删除回车符
  • #11212: Sizzle.getText 在 IE 中将不间断空格转换为空白字符

构建

  • #11767: 支持自定义构建,不含效果
  • #11789: 更新 README 以描述 Grunt 构建系统
  • #11856: 将尺寸模块化
  • #11857: 将 CSS 模块化
  • #11865: 将偏移量模块化

核心

  • #10657: 弃用/移除 jQuery#size(),转而使用 jQuery#length
  • #11290: 选择器被解释为 HTML
  • #11470: 添加一个内置的 readyP Promise

CSS

  • #10373: `document.defaultView` => `window`
  • #10413: 当隐藏父元素的 "box-sizing: border-box" 子元素时,width、innerWidth、innerHeight、outerWidth、outerHeight 不准确
  • #10679: CSS3 供应商前缀支持
  • #11004: 当 box-sizing 为 border-box 时,getWH 错误地删除了填充和边框宽度
  • #11787: 移除 jQuery.curCSS

数据

  • #10589: 移除 $.fn.data("events")

延迟

  • #11010: 使 Deferred.then == Deferred.pipe 像 Promise/A 一样
  • #11011: 允许使用传统的选项对象为 $.Callbacks 设置标志
  • #11736: 移除 Deferred .isResolved() 和 .isRejected()
  • #11749: 当将多个 Deferred 对象传递给 $.when() 时,保留上下文对象

尺寸

  • #6724: 在移动 Safari (iPhone) 中,$(window).height() 错误
  • #10877: 使 outerWidth/Height 成为一个设置器
  • #11293: 读取空 TD 的宽度或 outerWidth 会改变列宽的值
  • #11604: 将 $(elem).width(-val) 从无操作更改为 $(elem).width(0)
  • #11724: 在 Firefox 12 中,$(document).height() 发生了改变

效果

  • #7109: 在 WebKit 中,animate 宽度以无效宽度开始
  • #7157: 动画回调显示元素仍然是 ":animated"
  • #8387: 在 WebKit 浏览器中,jQuery 1.5 的 hide/show 与内联和内联块元素存在闪烁问题
  • #8627: 在 IE 中,.animate() 对 letterSpacing 失败(1.5.1 中的回归问题)
  • #8892: 当 jQuery.fx.off 为 true 时,在对象显示之前,回调被触发
  • #9505: 在 WebKit 中,混合使用百分比和像素时,animate() 出现问题
  • #11635: 动画期间,显式 overflow:auto 被内联 overflow:hidden 覆盖
  • #11755: animate 及其别名不应使用 :hidden 选择器
  • #11854: 百分比动画跳到结尾

事件

  • #8545: 在 IE 中,事件存在泄漏问题
  • #10067: 在 document.readyState === 'interactive' 时,也触发 $.ready
  • #11101: 弃用 trigger 方法中的 "exclusive" 事件选项
  • #11328: 在 Windows 上,Ctrl 键不会将 event.metaKey 设置为 true
  • #11500: Bug: 在 IE7 & IE8 中,当手动触发 "change" 事件处理程序时,它不会执行
  • #11621: 在 document 上触发事件不会冒泡到 window
  • #11718: 弃用 .data() 事件
  • #11719: 弃用 .bind("ready") 事件
  • #11731: 弃用 "hover" 伪事件
  • #11733: 弃用 .load()、.unload() 和 .error() 方法
  • #11786: 弃用 .toggle( handler, handler, … ) 签名

操作

  • #8894: 在 IE 中,appendTo() 及其类似方法在调用 clone() 之后返回不正确的 jQuery 集
  • #10324: 在 IE9 中,Clone 不会复制 object 元素的 innerHTML
  • #11231: Append、Prepend、After、Before 应该接受数组作为第一个参数
  • #11338: .replaceWith() 和断开连接的节点存在不一致的行为
  • #11566: 当节点是 DocumentFragment 时,node.append 等不起作用
  • #11617: 定义一个 $.parseHTML 方法用于创建 HTML 片段

偏移量

  • #10996: 简化 offset()
  • #11823: 移除 webkitConvertPointFromNodeToPage

选择器

  • #3778: 选择器匹配问题
  • #5568: 在 FF/IE 中,选择器在带有注释标签时的行为不同
  • #8473: 在 IE9rc 中,*[tabIndex] 会选择所有没有 tabindex 的元素
  • #9400: 弃用 :text、:radio、:checkbox 等选择器扩展
  • #10003: 来自 #6963 的回归/向后兼容性破坏
  • #10074: 将两个 [] 选择器与 :first 连接不起作用
  • #10570: 当页面上存在跨域 iframe 时,:text 选择器在 IE7 中抛出错误
  • #10697: Sizzle 改进
  • #10809: 在 :focus 伪类解析器中,使用 ".activeElement" 的测试不正确
  • #11109: Sizzle: Expr.relative 过早截断
  • #11814: Sizzle 的元素根 QSA 策略(即附加临时 ID)没有考虑到逗号和其他选择器分割
  • #11826: 为 Sizzle 中的 matchesSelector 探索一个解析缓存系统

支持

  • #9385: 弃用 jQuery.browser
  • #11439: 使用了 jQuery.support.parentNode,但它不再定义
  • #11721: 弃用并移除 jQuery.support.boxModel 的内部使用
  • #11766: 将 jQuery.support 移动到 "不稳定" 状态

遍历

  • #9800: 新方法:.addBack(取代 .andSelf)
  • #11543: .has 在断开连接的元素上不起作用
  • #11706: `.has()` 在 document 片段上失败
  • #11738: 移除 .closest(Array) 返回 Array

未分类

  • #11325: 改善 domManip/buildFragment/clean
  • #11435: 要删除的过时测试代码,从 .data 的返回值中删除 toJSON
  • #11777: 添加 jQuery 核心对 EditorConfig 文件的支持

jQuery 1.7.1 RC1 发布

发布于 作者

只是想让你知道,我们并没有在 jQuery 中心睡大觉,我们已经发布了一个新的 jQuery 预览版本。它修复了自原始 1.7 版本发布以来社区报告的问题。请在您的应用程序中测试代码,确保没有重大问题。如果您尝试过 jQuery 1.7 并报告了一个 bug,那么它应该在这个版本中得到修复。

您可以从 jQuery CDN 获取代码

您可以通过将这些代码放入您现有的应用程序中并告知我们是否有任何东西不再起作用来帮助我们。请 提交一个 bug,并确保提到您正在使用 jQuery 1.7.1 RC1 进行测试。

我们希望鼓励社区中的每个人尝试 参与,为 jQuery 核心做出贡献。我们建立了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队就在这里,随时准备帮助您帮助我们!

jQuery 1.7.1 RC1 更改日志

1.7.1 RC1 版本的当前更改日志。

Ajax

  • #10723: jqXHR.always() 返回一个 Promise,而不是 jqXHR 对象

属性

  • #10724: $(document).text() 始终返回空字符串
  • #10773: removeAttr 对边缘情况很脆弱

构建

  • #10630: 修复与焦点相关的测试失败,以解决 Swarm 失败

核心

  • #10616: 对 .eq 中的 -1 未进行类型强制转换
  • #10646: 使 jQuery.error 抛出 instanceof Error 对象
  • #10682: 使用 $(‘ ‘) 创建 DOM 元素会造成内存泄漏并跳过片段缓存
  • #10687: jQuery 过早地调用 AMD define() 全局函数
  • #10690: isNumeric

CSS

  • #10733: 将 css 模块中的 jQuery.each 使用改为 for 循环

数据

  • #10675: 使用 internalKey 快捷方式代替 jQuery.expando

效果

  • #10669: .animate() 不再动画化百分比 (%) 宽度
  • #10750: 数据对象中的 "null" 可能会导致 stop 中出现错误

事件

  • #10676: wheelDelta 不再添加到 mousewheel 事件中
  • #10701: 使用 submit 函数提交表单时存在问题
  • #10704: special.handle 方法应该在 origType 名称下触发
  • #10705: off bug 事件名称解析器
  • #10712: 使用 live 绑定触发 blur 失败
  • #10717: 触发的 load 事件冒泡到 window
  • #10791: 在 SVG 元素上,委托事件失败
  • #10794: .triggerHandler 不应 .preventDefault()
  • #10798: live(“submit”) 和 .submit() 会导致非侵入式 ajax live 触发两次

操作

  • #10177: .wrap 中回调函数的索引始终为 0
  • #10667: .wrapAll() 中的 HTML5 支持会向元素添加一个 ":"
  • #10670: rnoshimcache 可能构造不正确
  • #10812: 在 IE7 中,将空对象传递给 .before() 或 .after() 会抛出异常

其他

  • #10691: 从单元测试中移除所有 “equals” 和 “same” 函数的出现

支持

  • #10629: IE 对假体过于敏感。探索清理 support.js 以避免将来出现任何崩溃

构建更轻量的 jQuery

发布于 作者

jQuery 现在已经超过五年了!在这段时间里,它与浏览器、网站、设备、开发人员和它服务的用户一起发展。它也,嗯,增长 了很多。jQuery 添加了许多有用的功能,但它也积累了我们宁愿不长期支持的废弃代码。这在台式电脑上使用高速连接可能不是问题,但我们希望 jQuery 也是移动设备的良好解决方案。

除了我们持续追求更高性能外,未来版本的优先事项是减小 gzip 压缩后的文件大小。由于每个新功能或错误修复都必须保留所有现有功能和行为,因此这项任务很艰巨。所以今天,我们希望就通过弃用某些功能来精简 jQuery API 展开讨论。以下是我们关于弃用的指南。

  • 我们认为该功能不代表使用 jQuery 的当前最佳实践。
  • 该功能已被证明在实际使用中不受欢迎、令人困惑、效率低下或无效。
  • 对该功能进行增强或解决其局限性在实际操作中不可行。
  • 在将来某个时间将其删除可能会带来显着的可用性、大小或性能优势。

弃用只是您可参与的过程中的第一步。我们的目标是

  • 解释弃用特定功能的原因,如上所述。
  • 在弃用和删除之间至少留出一个主要版本号,通常更多。
  • 提供对弃用功能的替代方案,以便迁移过程不那么痛苦。
  • 倾听社区关于弃用和删除的反馈。

在某些情况下,例如 1.7 版本中的 event.layerX/layerY,如果我们判断立即删除该功能比保留它造成的痛苦更少,我们将以更短的通知时间进行重大更改。这些情况将有望成为罕见的例外。

1.7 版本的弃用

考虑到这些因素,我们认为以下功能从 1.7 版本开始被弃用。使用这些功能的现有代码将继续运行,但推荐的替代方案是与未来版本兼容的更好选择。

.live() 和 .die():我们继续收到许多有关 .live() 方法的怪癖的错误报告,并看到用户对此感到困惑。常见问题现在已记录在它的 更新的 API 页面 上。我们强烈建议对新代码使用 .on() 或 .delegate(),因为它们是更好的 API。鉴于其广泛使用,我们不太可能在 1.8 中删除此 API,但请尽快更新您的代码。

非标准事件属性:作为我们提高事件处理程序性能努力的一部分,我们还将弃用从原生事件对象到 jQuery 事件对象的多项事件属性的复制,并将它们在 1.8 中删除:attrChange、attrName、relatedNode 和 srcElement。您可以通过 event.originalEvent.NAME 访问它们,而不是通过 event.NAME 访问它们。

$.ajax() 延迟别名:在 1.5 版本中,我们在 jqXHR 对象上定义了 .error()/.success()/.complete() 作为 Deferred 的 .fail()/.done()/.always() 方法的别名。虽然这在当时看起来是个好主意,但它使 jqXHR 成为一个非标准的 Deferred。这不好。只要有可能,优先使用延迟/承诺方法名称,而不是 jqXHR 方法名称。我们还需要做一些工作才能提供完整的迁移路径,因此我们可能会在 1.8 之后继续支持别名。

deferred.isResolved() 和 deferred.isRejected():现在 Deferred 和 Promises 具有进度通知和一个方便的 .state() 方法,我们正在弃用这些旧方法,并将它们在 1.8 中删除。使用 N-1 个布尔方法来获取 N 状态对象的 state,这是一种残酷的“二十个问题”代码版本。基于延迟的代码很少需要检查 state,而现在返回的字符串对于调试场景更加方便,调试场景中通常使用它。

.attr(“value”) 用于输入:为了向后兼容,我们一直在返回此处的当前值(如“当前在输入框中的内容”),而不是真正的属性(HTML 中 value 属性的值)。这使我们无法提供真正的属性值,而且令人困惑,因为 W3C 选择器是针对属性而不是当前值工作的。因此,我们正在弃用此行为,并将它在 1.8 中删除。始终使用 .val() 方法来获取输入元素的当前实时值。在我们能够重新获取属性之前,您可以使用 $("selector")[0].getAttribute("value"),除了在 IE 6/7 中,它仍然会返回当前值。(我们的 1.8 解决方案将在所有浏览器上获取属性值,这也是我们渴望改变这一点的另一个原因。)

.closest(Array) 返回 Array:此签名有点奇怪,它是为旧的实时事件代码创建的,但它返回的是一个 Array 而不是一个 jQuery 对象。从 1.8 开始,我们计划将其删除。.closest() 的其他签名将保留,不受影响。

.data(“events”):jQuery 将其事件相关数据存储在一个名为(等着瞧)events 的数据对象中,该对象位于每个元素上。这是一个内部数据结构,因此在 1.8 中,它将从用户数据名称空间中删除,因此它不会与同名项冲突。仍然可以通过 jQuery._data(element, "events") 访问 jQuery 的事件数据,但请注意,这是一个未记录的内部数据结构,不应该修改。

$.sub() 作为插件:虽然 $.sub() 对创建插件的无干扰区域很有用,但它没有被 jQuery 核心使用,也没有被其他代码广泛使用,因此我们打算在 1.8 版本中将其转换为插件以节省空间。

展望 jQuery 1.8

鉴于我们对轻量级 jQuery 的追求,1.8 中新功能的筛选标准将非常严格。即使与性能相关的建议也需要在它们使用的空间或节省的空间之间取得平衡。可以通过插件、特殊事件、属性钩子或其他 jQuery 扩展机制实现的功能,目前可能仍然保留在核心之外。

这就引出了一个问题:我们在 1.8 中可以弃用什么,最终可以删除什么,以简化和优化库。这些东西不必完全消失;例如,它们可以移动到一个单独的插件中,并且只有在需要时才包含进来。看看您是如何使用 jQuery 的,并与您的同事讨论一下。

几周内,我们将通过另一篇博文发布关于 jQuery 1.8 的征求意见 - 所以现在就开始思考吧!

编辑:不,我们还没有删除 IE6 支持,我们也不能。正如 John Resig 在每次 jQuery 大会上提到的那样,IE6 的大多数罪过也降临到 IE7 和 IE8 上,这两者加起来仍然拥有超过 三分之一 的桌面浏览器市场份额。在我们可以同时淘汰 IE7 和 IE8 之前,删除对 IE6 的支持是没有意义的。

jQuery 1.7 发布

发布时间: 作者:

jQuery 1.7 已准备好下载!您可以从 jQuery CDN 获取代码

这个新版本也应该在 Google 和 Microsoft CDN 上在 1 或 2 天内可用。

感谢您在测试和报告 beta 期间的错误,我们相信我们已经发布了一个稳定可靠的版本。如果您确实发现了问题,请 提交错误报告,并确保在版本选择中选择 jQuery 1.7。还要确保提供一个 jsFiddle 测试用例,以便我们能够快速分析问题。

jQuery 1.7 中的新功能

API 网站上的 1.7 版本标签 是快速了解此版本中新功能的绝佳方法。以下是 1.7 中主要内容的概述,以及 API 文档中尚未提及的一些内容。

新的事件 API:.on() 和 .off()

新的 .on().off() API 将所有将事件附加到 jQuery 文档的方法统一起来 - 而且它们输入起来更短!

$(elements).on( events [, selector] [, data] , handler );
$(elements).off( [ events ] [, selector] [, handler] );

当提供选择器时,.on() 类似于 .delegate(),因为它附加了一个委托的事件处理程序,该处理程序由选择器过滤。当选择器被省略或为 null 时,调用类似于 .bind()。有一种模棱两可的情况:如果 data 参数是一个字符串,您必须提供一个选择器字符串或 null,以便数据不会被误认为是选择器。传递一个对象作为 data,您将永远不必担心特殊情况。

1.7 中仍然存在所有现有的事件绑定方法(及其相应的取消绑定方法),但我们建议您对任何已知使用 1.7 或更高版本的新 jQuery 项目使用 .on()。以下是旧 API 调用与新 API 调用的映射示例

$('a').bind('click', myHandler);
$('a').on('click', myHandler);

$('form').bind('submit', { val: 42 }, fn);
$('form').on('submit', { val: 42 }, fn);

$(window).unbind('scroll.myPlugin');
$(window).off('scroll.myPlugin');

$('.comment').delegate('a.add', 'click', addNew);
$('.comment').on('click', 'a.add', addNew);

$('.dialog').undelegate('a', 'click.myDlg');
$('.dialog').off('click.myDlg', 'a');

$('a').live('click', fn);
$(document).on('click', 'a', fn);

$('a').die('click');
$(document).off('click', 'a');

委托事件的性能改进

随着页面大小和复杂度的增加,事件委托变得越来越重要。Backbone、JavaScriptMVC 和 Sproutcore 等应用程序框架大量使用事件委托。考虑到这一点,jQuery 1.7 事件处理进行了重构,重点是使委托事件更快,特别是对于最常见的情况。

为了优化最常用形式的选择器的代码,我们检查了 Google 代码搜索中的代码样本。在 .live().delegate() 方法调用中使用的选择器中,近三分之二的选择器采用 tag#id.class 的形式,其中 tag、id 或 class 中的一个或多个被使用。通过在附加事件时在 JavaScript 中解析这些简单的选择器,我们能够在事件传递过程中胜过甚至浏览器的 matchesSelector 原生代码实现。对于更复杂的选择器,我们仍然使用 Sizzle 引擎,因此所有现有代码都应该继续运行。

最终结果是委托事件的交付速度大约是 1.6.4 的一半。

更好地支持 IE6/7/8 中的 HTML5

任何尝试使用 <section> 等新 HTML5 标签的人,无疑会遇到 IE 6/7/8 不仅不理解这些标签,而且实际上还会从文档中删除它们的问题。在 jQuery 1.7 中,我们构建了对在旧版 IE 中使用 HTML5 标签的支持,方法是使用 .html() 等方法。这种支持与以前需要 innerShiv 的支持相当。您仍然必须在旧版 IE 的文档头部包含 html5shiv (或 Modernizr) 以支持 HTML5 标签。 有关更多背景信息,请参阅 HTML5 Shiv 的故事

切换动画按预期工作

在 jQuery 的先前版本中,切换动画(如 .slideToggle().fadeToggle())在动画相互堆叠且先前动画使用 .stop() 终止时无法正常工作。这已经在 1.7 中得到 修复,因此动画系统会记住元素的初始值并在切换动画过早终止的情况下重置它们。

异步模块定义 (AMD)

jQuery 现在支持 AMD API。请注意,jQuery 1.7 本身不是一个脚本加载器;它与 AMD 兼容的加载器(如 RequireJS 或 curl.js)协作,因此它可以动态加载,并且 ready 事件可以由加载器控制。现在,一个 AMD 兼容的加载器可以从 Google 或 Microsoft 等 CDN 加载未修改版本的 jQuery 1.7。非常感谢 James Burke (@jrburke) 提交了补丁和单元测试,然后耐心地等待我们将其整合。

jQuery.Deferred

jQuery.Deferred 对象已扩展了新的进度处理程序和通知方法,这些方法会调用这些处理程序。这使您能够在不解析或拒绝请求的情况下,异步地通知侦听器请求中的进度。此外,还有一个新的 state() 方法,它返回 Deferred 的当前状态;它主要用于调试。

Deferred 现在使用新的 jQuery.Callbacks 功能实现,这是一种对一系列处理程序进行排队和触发的通用方法。此功能可能对插件编写者很有用,尽管 Deferred 和事件子系统为此类功能提供了更高级别的接口。

jQuery.isNumeric()

在 jQuery 内部,我们发现了一些需要了解参数是否为数字,或者如果参数是其他类型是否会成功转换为数字的情况。我们决定编写和记录 jQuery.isNumeric(),因为它是一个实用的工具。向其传递任何类型的参数,它将返回 truefalse,具体取决于情况。

已删除的功能

event.layerX 和 event.layerY:我们在 1.7 版本中删除了这些非标准属性。虽然我们通常会为这些属性经历一个弃用通知期,但 Chrome 16 版本在页面上会生成大量 控制台警告消息。为此,我们决定立即删除它们。在仍然支持这些属性的平台上,它们可以通过 event.originalEvent.layerXevent.originalEvent.layerY 获得。

jQuery.isNaN():此未记录的实用程序函数已删除。它令人困惑,因为它采用了内置 JavaScript 函数的名称,但没有相同的语义。新的 jQuery.isNumeric() 具有类似的目的,但它具有已记录和支持的优势。尽管 jQuery.isNaN() 未记录,但 Github 上的几个项目都在使用它。我们已联系他们,并要求他们使用 jQuery.isNumeric() 或其他解决方案。

jQuery.event.proxy():此未记录且已弃用的方法已删除。用户应改为调用已记录的 jQuery.proxy 方法。

jQuery 团队以及您的作用

我要感谢我们常驻团队贡献者在发布此版本方面所做的出色工作,尤其是 Timmy Willison(Github 上的 timmywil)、Corey Frang(gnarf)、Rick Waldron(rwldrn)和 Julian Aubourg(jaubourg)。Karl Swedberg(kswedberg)和 Addy Osmani(addyosmani)在将新的文档整理到 API 网站上付出了辛勤努力。此外,还要感谢 Mike Sherov(mikesherov),这位新手贡献者已经为几个棘手的错误创建了补丁。非常感谢所有报告错误、提交拉取请求、审查提交以及以其他方式确保我们尽最大努力的人。

不过,我们始终需要更多帮助,而这正是您能够贡献的地方。您能做的最简单、最重要的是偶尔将我们正在进行的工作与您的代码和您的期望进行对比。它始终位于 https://code.jqueryjs.cn/jquery-git.js,并且每次对我们 github.com 上的 master 分支 进行新的提交时都会构建一个新的副本。如果您在最终版本中发现了一个错误,请针对 jquery-git.js 进行测试,以查看它是否已修复。这非常容易,因为 jsFiddle.net 提供了一个选项,可以使用 jquery-git.js 文件作为“jQuery(边缘)”来测试您的代码。

如果您想做更多的事情,我们很乐意让您参与进来!我们已经编写了 文档,可以帮助您开始使用该流程,并且我们中的一个或多个通常在 IRC 上的 #jquery-dev 频道中提供帮助,如果您需要更多帮助或信息。

jQuery 1.7 更改日志

1.7 版本的当前更改日志。

Ajax

  • #9399:弃用 jqXHR.success 和 jqXHR.error

属性

  • #5479:removeAttr:删除多个属性
  • #6743:根据浏览器将 enctype 映射到编码
  • #10176:注入的脚本标记被评估两次
  • #10278:checkboxEl.attr('checked')在 checkboxEl.click() 之后返回过时值
  • #10429:IE7 - 调用 removeAttr('contenteditable')时出现无效的过程调用或参数;
  • #10514:removeAttr 不会在 IE6/7 中删除 class 属性

核心

  • #6485:IE 中 HTML5 的解决方案
  • #7102:将 jQuery 注册为 CommonjS 异步模块
  • #9453:$.inArray 不支持 fromIndex
  • #10478:将 jQuery.isNaN 切换为 jQuery.isNumeric

CSS

  • #10267:IE8 和 window is(':visible')崩溃

数据

  • #7323:允许使用 $.fn.removeData 一次删除多个数据键
  • #8909:$(element).data() 将比需要扫描更多属性。
  • #8921:jQuery 私有数据应保持私有

延迟

  • #8856:请求:deferred.isUnresolved()
  • #9033:IE8 中的 try{ } finally{ } 错误
  • #9398:改进 Deferred 的提案

尺寸

  • #9434:.outerWidth()/.outerHeight()/.innerWidth()/.innerHeight() 应在 window 和 document 上运行

效果

  • #5684:效果:动画回调中的异常会导致无限循环
  • #6150:.stop 有时不会清除 .delay
  • #6641:在动画完成回调中调用 stop() 会导致其他动画冻结
  • #8685:动画应跟踪动画状态,以正确解决堆叠的动画
  • #9280:允许为 animate() 使用多个效果队列
  • #9548:animate 无法在 svg 元素的 fill-opacity css 属性上使用
  • #10445:将 queue 设置为 true 会导致错误
  • #10497:.stop 应允许选择要停止的队列
  • #10622:.show() 不会正确还原 CSS 设置的“display”值

事件

  • #3368:event.metaKey 应仅在非 Mac 上分配给 event.ctrlKey
  • #6170:jQuery(window).scroll(); 会导致 IE* 滚动到 0,0
  • #6319:回归:在 IE 中,change 处理程序中的 stopPropagation 会错误地应用于 keydown 事件
  • #6386:通过“event.special.live.add”支持 live 事件的 data 参数
  • #6593:IE8:当通过 jQuery 附加单独的处理程序时,DOM 0 事件处理程序被调用两次
  • #6667:submit 事件在某些情况下不会在 IE* 中委托
  • #6903:特殊事件需要一种方法来确定它们是使用 .bind 还是 .live/.delegate 绑定。
  • #6942:JQuery.event.fix 在 IE 中处理键事件时会导致不必要的回流
  • #7139:“hover” 事件别名应适用于 .bind 以及 .live
  • #7161:表单元素上的 Submit 事件在 IE 中未正确解除绑定
  • #7444:使用“Enter”而不是按钮单击在 ie8 或 ie7 上提交表单会导致 live submit 事件触发两次。
  • #8157:聚焦已聚焦的文本字段会阻止 IE 中的 change 事件触发
  • #8728:当离开的元素在离开时被删除时,事件 'mouseenter' 不会触发
  • #8789:元数据:事件属性挂钩
  • #8858:特殊事件 - _default 方法无法访问 trigger 方法的`data` 参数
  • #8866:IE8 input[type=file] 委托 change 事件文件仅在失焦时触发
  • #8982:bind(“unload someOther”)=> 在卸载时,处理程序不会只执行一次。
  • #9069:当悬停在元素的子元素上时,使用 live 或 delegate 时,mouseleave 会触发
  • #9279:delegate() bind 无法为选定元素正确处理 mouseover/mouseout 和 mouseenter/mouseout
  • #9393:统一和 DRY 事件系统
  • #9593:委托的 submit 事件在 IE 中不是 jQuery.Event 的实例
  • #9724:当 window.parentNode 是 DOM 元素时,trigger 函数中的无限循环
  • #9901:使用 .delegate 时,event.handleObj.namespace 不正确
  • #9933:jQuery.fn.toggle() 应在私有数据对象中存储状态
  • #9951:当 DOM 在处理程序中修改时,.trigger() 中的顺序错误
  • #10375:不要在 jQuery.event.props 中包含 `type`
  • #10438:重命名 jQuery.event.propHooks => .fixHooks
  • #10468:删除已弃用的 jQuery.event.guid 和 jQuery.event.proxy
  • #10489:断开连接的元素在 .trigger() 上冒泡到窗口
  • #10531:考虑从 $.event.props 中删除 layerX 和 layerY
  • #10563:jQuery.Event 不再包含与事件委托匹配的元素。
  • #10567:委托的事件错误地匹配类名
  • #10575:1.6.4 和 1.7rc1 之间 live 事件传播的重大更改
  • #10576:jQuery1.7rc1 和 jQueryMobile1.0rc2 - IE 在 jqm triggerCustomEvent 方法中出现错误

操作

  • #6782:谨慎地允许更多字符串使用 innerHTML
  • #7037:克隆元素中添加了重复的 mouseover 和 mouseout 事件。
  • #10501:HTML5 元素“innerShiv”在 html()/append() 中不一致

其他

  • #10420:鼠标滚轮
  • #10553:进一步减少最小许可证标头

选择器

  • #3144:.text() 方法的跨浏览器结果不一致
  • #5637:布尔(和空)属性选择器失败
  • #6863:更快的 getText
  • #7128:由于使用了 DOM 属性,属性选择器在 qSA 和 Sizzle 之间不一致
  • #8539:在没有 querySelectorAll 的浏览器中,Sizzle 缓存冲突
  • #9261:Has Attribute 在 filter/children/siblings 中不起作用
  • #9570:选择器 $(‘form[name=”..”]’) 在某些情况下在 IE8 中返回零个元素
  • #10178:$(window).is(“a”)>> 未捕获的类型错误:无法调用未定义的 toLowerCase 方法
  • #10315:Sizzle 在使用位置选择器时忽略 seed 参数
  • #10562:siblings 方法在使用 Sizzle 调用的伪选择器时返回意外元素

支持

  • #5145:在 Chrome 浏览器中,jQuery.support.opacity = false
  • #6809:

宣布 jQuery 标准团队

发布日期 作者

今天,我们很高兴宣布创建一个名为 jQuery 标准团队的新 jQuery 子团队,让 Web 开发人员在标准过程中拥有发言权。

简介

我们都知道 Web 标准很重要。它们有助于确保我们编写的代码在不同的技术中、对于不同能力的人员以及最重要的是在所有浏览器中都能正常工作。

话虽如此,我们有多少人觉得自己的声音、建议和想法被负责定义这些标准的那些群体听到了呢?现实情况是,虽然我们许多人都希望看到改变,但由于时间限制和冗长的正式流程,我们无法参与标准讨论,参与编写规范,并为功能的未来贡献力量。 这使得 Web 开发人员很难发声。



Yehuda Katz 是团队负责人。Paul Irish 加入他。

另一个问题是,对于那些参与了这个过程的人来说,他们经常会觉得在标准邮件列表中的某个特定主题上参与,效果有限,因为 Web 社区非常分散。 浏览器供应商在这些列表中非常活跃,并且几乎在所有主题中都假设了大量的机构知识。 这些列表中的实施者有自己的场所来讨论共同关注的领域,但除了在会议上偶然聚会之外,希望参与的 Web 开发人员却没有。

jQuery 项目希望帮助改变这种状况——我们希望您能够参与塑造 Web 的未来。

jQuery 标准团队

jQuery 标准团队有三个主要目标

  • 代表 Web 开发人员社区,特别是 jQuery 用户,向 W3C 和 TC39 等标准机构,目的是改进现有标准和正在进行的标准,以更好地满足 Web 开发人员的需求。
  • 代表 Web 开发人员社区,尤其是 jQuery 用户,向浏览器供应商,目的是帮助他们识别应该优先实施的标准以及可以构建的概念验证。
  • 帮助 jQuery 项目适当地采用新标准和浏览器功能。

这标志着 Web 开发人员社区提交反馈和影响标准机构和规范的方式发生了重大变化。 通过降低参与标准机构和浏览器供应商的建议和问题被听到的门槛,我们希望鼓励更多对标准机构和浏览器供应商感兴趣的开发人员参与这个过程。

jQuery 标准团队由 jQuery 团队成员 Yehuda Katz 和 Paul Irish 领导,你们中有些人可能认识他们。 Yeuhda 和 Paul 多年来在各种职位上与标准机构和浏览器供应商广泛合作,他们在 SproutCore 和 Chrome 开发者关系方面的工作,为他们提供了在为社区倡导时有用的额外视角。

您可能想知道为什么我们觉得这个团队应该代表更广泛的 Web 开发人员社区。 由于 jQuery 被 Web 上如此大比例的网站使用(超过 50% 的前 10,000 个网站),我们对通常面临的问题和挑战以及现有实施中我们需要尝试解决的哪些问题有很好的了解。 由于 jQuery 也非常专注于 DOM 操作,因此该库为已知的实施问题及其(当前)最佳解决方案提供了良好的信息来源。

虽然当前团队主要由 jQuery 团队成员组成,但我们希望让尽可能多的对标准和规范充满热情的开发人员参与到团队中来。 归根结底,该团队的目标是帮助识别对该过程感兴趣的 Web 开发人员,并为我们所有人提供一个论坛来讨论该过程、想法和共同关注的领域。 我们相信,通过共同努力,我们可以共同构建一个更好的 Web。

参与其中

如果您有兴趣参与 jQuery 标准团队,最简单的方法是注册 Google 论坛。 与其他 jQuery 子团队类似,将在 freenode 上的 #jquery-meeting(日期待定)定期举行公开会议,讨论该团队如何才能尽可能有效地推广 Web 开发人员社区的需求。

您可能已经看到了 Paul 的帖子 什么功能可以改进 Web? — 如果您的反馈在那里被捕获,您已经参与了。 ;)

您也可以在 官方团队 GitHub 存储库 上的错误跟踪器中报告(或评论)标准或规范问题。 如果您正在发布新的问题,请尝试识别规范或标准中已经存在或目前正在提出的问题。 这里 是一个此类问题的绝佳示例

我们希望收集对 Web 生态系统有良好规范和表达的 issues,并与标准机构或供应商一起倡导改进。 对于真正的 issues,我们会相应地对其进行标记(例如,W3C、TC39、浏览器供应商等),如果适用,会向相应的标准组或浏览器供应商提交工单,这样您就不必自己提交。

结论

通过创建这个新的论坛,我们希望让数百万对参与这个过程感兴趣但没有简单方法来参与的 Web 开发人员能够发声。 请告诉我们您对该团队的看法,因为我们希望尽可能地改进它。 我们期待听到您对它和标准流程的评论、建议和想法!

jQuery 1.6.4 发布

发布日期 作者

jQuery 1.6.4 发布

这是 jQuery 的一个次要版本。 我们发布它是为了修复 jQuery 1.6.3 发布期间出现的一些问题。

您可以从 jQuery CDN 获取代码

您可以通过将该代码放入您现有的应用程序中,并告知我们如果任何内容不再起作用,来帮助我们。 请 提交错误,并确保您提及您正在针对 jQuery 1.6.4 进行测试。

我们希望鼓励社区中的每个人尝试 参与,为 jQuery 核心做出贡献。我们建立了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队就在这里,随时准备帮助您帮助我们!

jQuery 1.6.4 更改日志

1.6.4 版本的当前更改日志。

数据

  • #10194:带单个破折号包围的字母的数据属性名无法通过驼峰式名称访问

事件

  • #10208:$(“form”).live(“submit”, fn) 在 IE8 中没有从 <button type=”submit”> 中触发

支持

  • #10197:jquery 1.6.3 中的 mime-type application/xhtml+xml 存在问题

jQuery 1.6.3 发布

发布日期 作者

jQuery 1.6.3 现已发布! 这是基于 jQuery 1.6 的第三个次要版本,修复了许多 bug,如下所示。

像往常一样,我们提供了两个 jQuery 副本,一个是压缩的,一个是未压缩的(用于调试或阅读)。

您可以通过将该代码放入您现有的应用程序中,并告知我们如果任何内容不再起作用,来帮助我们。 请 提交错误,并确保您提及您正在针对 jQuery 1.6.3 进行测试。

非常感谢所有报告错误、提交补丁以及在本次发布中提供帮助的人! 我们想鼓励社区中的每个人参与进来,为 jQuery 核心做出贡献。 我们已经设置了一个完整页面 的信息,专门用于更深入地参与团队。 团队就在这里,随时准备帮助您帮助我们!

亮点

修复一个 XSS 攻击向量: 用户 ma.la 报告 了许多网站正在使用的一种常见模式,即使用 location.hash 选择元素,这允许某人将脚本注入到页面中。 这种做法似乎很普遍,因此我们决定修改选择器识别,以防止针对最常见情况的脚本注入。 如果任何传递给 $() 的字符串包含“#”字符,则该字符串不能包含 HTML 标签(因此不能包含脚本)。 有关更多信息和测试用例,请参见上面链接的工单。

不再有动画 “虫洞” 当我们在 1.6 版本中添加支持时,我们对浏览器的 requestAnimationFrame API 抱有很高的期望。 但是,从那时起,我们收到的最大量的投诉之一与 requestAnimationFrame 在标签不可见时如何运作有关。 当标签不可见时启动的所有动画都会“堆积”,并且只有在标签恢复焦点后才会执行。 然后它们都以超速动画! 我们已经删除了对该 API 的支持(这对您调用 jQuery 动画功能的方式没有影响),并计划将其纳入 jQuery 的未来版本中。

更好地处理 HTML5 数据属性名称: $().data() API 同时处理用于 jQuery 和插件内部使用的数据,以及读取 HTML5 data- 属性的初始值。 我们改进了使用 HTML5 约定的能力,例如在需要时将 camel-case 转换为 camelCase。 但是请记住,$().data() API 仅在最初读取 HTML5 data- 属性,出于性能原因,不会将后续数据更改与属性同步。 要更新 HTML 标记中的实际属性,请使用 .attr()

jQuery 1.6.3 更改日志

1.6.3 版本的更改日志

Ajax

  • #9255:jQuery.parseXML 错误处理在 webkit 浏览器中不起作用
  • #9854:传递 statusText 而不是“规范化”它
  • #9887:jQuery.ajaxSetup 可能导致不必要的内存使用
  • #9970:ajax.js 中的拼写错误:status 应该是 jqXHR.status?
  • #10098:对类似注释的 Accept 标头进行编码,以避免移动运营商篡改

属性

  • #9630:foo.contents().hasClass() 返回不正确的值
  • #9699:removeAttr(‘style’) 在 webkit 中不一致地删除 style 属性
  • #9719:removeAttr(‘disabled’) 不会改变 IE6 中输入的颜色
  • #9979:.prop(‘tabIndex’) 对尚未设置 tabIndex 的元素返回不一致的结果
  • #9980:通过在 IE6/7 中对所有内容使用 getAttributeNode 来简化 attr 代码

构建

  • #9988:压缩版 jQuery 中的最小许可证头

核心

  • #9521:使用 $(location.hash) 和 $(#) 进行 XSS 攻击是否需要?
  • #9897:使用 try-catch 检测 isPlainObject
  • #10076:如果第二个参数是 `null` 或 `undefined`,$.inArray 会导致 IE6 和 Chrome 崩溃

CSS

  • #6652:在动画结束后删除 filter:alpha(opacity=100)
  • #9572:在 .css() 方法中支持 -ms-transform
  • #10021:无法使用相对值语法将负数添加到 .css() 和 .animate()

数据

  • #8235:jQuery.data 在某些情况下会抛出脚本错误
  • #9318:HTML5 数据属性在属性名包含数字时具有奇怪的行为
  • #9413:$.fn.removeData 不会删除名称中带有破折号的数据
  • #9779:允许对数据属性值进行非 null|undefined 评估
  • #9794:jQuery.fn.data() 正确处理对任意数据属性值的访问
  • #10016:无法使用 jQuery.data 方法检索带有破折号的键名的“假值”
  • #10080:从框架窗口卸载在 IE8 中会中断

尺寸

  • #10123:.width() 在 Firefox 6 中可以返回浮点数

效果

  • #9381:由于 requestAnimationFrame,浏览器失去焦点时动画会停止
  • #9678: setInterval 被动画清除

事件

  • #7071: 在提交特殊处理程序期间,IE 中访问 VML 元素的“type”属性失败

操作

  • #9587: 在 IE8 中,克隆包含对象的 div 会导致错误

支持

  • #9634: 在 support.js 初始化期间,左上角出现可见的“t”字符
  • #9823: IE 8 在 CSS 中使用 BODY 的 background-image 时崩溃
  • #9964: test/support.js 模块 strictEqual 错字
  • #10029: $.support.scriptEval 已移除,但在文档中仍然存在

如果您发现上述问题,请尽快提交带有测试用例的错误报告。博客评论或推特不是有用的错误报告!

jQuery 1.6.2 发布

发布日期: 作者:

jQuery 1.6.2 发布

jQuery 1.6.2 现已发布!这是基于 jQuery 1.6 的第二个次要版本,包含了一些错误修复。

像往常一样,我们提供了两个 jQuery 副本,一个是压缩的,一个是未压缩的(用于调试或阅读)。

您可以直接将上述 URL 包含在您的网站中,以获得快速加载 jQuery 的全部性能优势。

您可以通过将代码放入现有应用程序中并告知我们是否有任何不再正常工作的内容来帮助我们。请 提交错误报告 并确保您提到了您正在针对 jQuery 1.6.2 进行测试。

我们希望鼓励社区中的每个人尝试 参与,为 jQuery 核心做出贡献。我们建立了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队就在这里,随时准备帮助您帮助我们!

jQuery 1.6.2 变更日志

1.6.2 版本的当前变更日志。

属性

  • #9286: 在表单上使用 live submit
  • #9298: $(elem).attr(eventName) 在 IE7 中无法正常工作
  • #9329: IE7 中的 attr(“title”) 问题
  • #9362: .attr(“value”) 不适用于 meter 元素
  • #9468: $(‘form’).attr(‘class’) 在 IE 6 中始终返回未定义
  • #9499: removeClass 仅移除第一个类实例

核心

  • #9301: 通过带有连字符键的对象设置 data() 会创建不可访问的数据。
  • #9368: jQuery.camelCase() 在 css.js 中定义,但被更广泛地使用
  • #9471: 在 iframe 中加载包含 jquey.1.6.1.min.js 的 html 页面时,发现内存泄漏

CSS

  • #7557: outerWidth()
  • #9237: .css() 不适用于具有连字符属性的相对值

尺寸

  • #9300: outerWidth(true) 问题

效果

  • #9220: 动画回调在下一个队列函数执行后触发。
  • #9678: setInterval 被动画清除

事件

  • #9285: 自定义触发器

操作

  • #8950: (Chrome、Firefox) jQuery 中的第二个参数(事件为空)在创建 时抛出错误
  • #9370: jQuery 1.6 和 IE6 的兼容性问题

支持

  • #9239: 1.6.0 版本破坏了 body 元素的背景行为
  • #9440: v1.6.1 在 IE8 中破坏了布局

jQuery 1.6.2 RC 1 发布

发布日期: 作者:

这是一个 jQuery 预览版本。我们发布它是为了让每个人都可以开始在他们的应用程序中测试代码,确保没有重大问题。

您可以从 jQuery CDN 获取代码

您可以通过将代码放入现有应用程序中并告知我们是否有任何不再正常工作的内容来帮助我们。请 提交错误报告 并确保您提到了您正在针对 jQuery 1.6.2 RC 1 进行测试。

我们希望鼓励社区中的每个人尝试 参与,为 jQuery 核心做出贡献。我们建立了一个 完整页面 的信息,专门用于帮助您更多地参与团队。团队就在这里,随时准备帮助您帮助我们!

jQuery 1.6.2 RC 1 变更日志

1.6.2 RC 1 版本的当前变更日志。

属性

  • #9286: 在表单上使用 live submit
  • #9298: $(elem).attr(eventName) 在 IE7 中无法正常工作
  • #9329: IE7 中的 attr(“title”) 问题
  • #9362: .attr(“value”) 不适用于 meter 元素
  • #9468: $(‘form’).attr(‘class’) 在 IE 6 中始终返回未定义
  • #9499: removeClass 仅移除第一个类实例

核心

  • #9301: 通过带有连字符键的对象设置 data() 会创建不可访问的数据。
  • #9368: jQuery.camelCase() 在 css.js 中定义,但被更广泛地使用
  • #9471: 在 iframe 中加载包含 jquey.1.6.1.min.js 的 html 页面时,发现内存泄漏

CSS

  • #7557: outerWidth()
  • #9237: .css() 不适用于具有连字符属性的相对值

尺寸

  • #9300: outerWidth(true) 问题

效果

  • #9220: 动画回调在下一个队列函数执行后触发。

事件

  • #9285: 自定义触发器

操作

  • #8950: (Chrome、Firefox) jQuery 中的第二个参数(事件为空)在创建 时抛出错误
  • #9370: jQuery 1.6 和 IE6 的兼容性问题

支持

  • #9239: 1.6.0 版本破坏了 body 元素的背景行为
  • #9440: v1.6.1 在 IE8 中破坏了布局

jQuery Color v2 Beta 1 发布

发布日期: 作者:

早在 2007 年,我们就发布了 jQuery Color 插件,它一直在为您提供基于颜色的动画。我们现在正在准备该插件的第二个版本,它将添加 API、RGBA、HSLA 和许多其他功能。现在是发布 Beta 版的时候了!该插件的仓库可以在 github.com/jquery/jquery-color 中找到。您也可以在 code.jquery.com 上找到 未压缩版本压缩版本

新功能概述

RGBA

我们现在支持 RGBA 颜色值。在不支持 RGBA 的浏览器中,将使用最接近元素的 backgroundColor 来计算颜色的“混合”近似值。虽然这不是“真正的”alpha,但至少在处理纯色背景时会提供 alpha 的错觉。这是一个 Opera 10、Chrome 10、Firefox 3.6 和 IE 6 的截图,它们都运行着 这个 alpha 混合演示
Opera 10, Chrome 10, Firefox 3.6, and IE 6  demonstrating alpha blending

HSLA

我们现在还支持在所有浏览器中使用 HSLA 颜色值,除了 alpha,它使用上述相同的技术。

易于使用的 API

$.Color() 不再是一个简单的私有实用程序方法组,而是创建一个新的 Color 对象。新的 Color 对象可以通过几种不同的方式初始化:颜色名称、十六进制颜色代码、css 样式 rgba/hsla、rgba 值数组或包含颜色属性的对象。现在每个颜色属性都有帮助方法,例如 .red().hue(),它们可以获取或设置特定值。结合 .toRgbString().transition().is() 等辅助函数,$.Color 现在可以处理您可能需要的任何颜色需求。有关所有可用新功能的概述,请参阅 github.com/jquery/jquery-color 上的 README。jQuery.Color 不仅仅是为您提供简单颜色的动画,现在您可以使用它的 API 来进行复杂的颜色计算和动画!

快速示例

// Create a red Color object:
var red = $.Color( 'rgba(255,0,0,1)' ); // using a css string

// Create a red Color object, then make orange:
var orange = $.Color( '#FF0000' ).green( 153 );

// Get the color halfway between red and blue:
var between = $.Color([ 255, 0, 0 ]).transition( "blue", 0.5 );

动画部分颜色

我们添加了对仅定义颜色对象的一个或两个属性的支持,以便您可以使用部分颜色进行动画,例如 这样

// desaturate the background of this element
elem.animate({
    backgroundColor: $.Color({ saturation: 0 })
}, 1000);

报告问题/请求功能

如果您发现新的颜色插件存在任何问题,或者想请求功能,请创建一个 github 问题

此外,我们很乐意看到并展示一些对新的 $.Color beta 版的出色使用,所以请务必在评论中与我们分享。