jQuery 1.2.1:1.2 的快速修复

发布时间: 作者:

jQuery 1.2.1 是针对 jQuery 1.2 的错误修复版本。您可以在 错误跟踪器 上查看修复内容的完整列表。

下载

jQuery 1.2.1:

如果您想从 Subversion 仓库 中检出完整版本,您可以按照 以下说明 进行操作,并从以下位置检出源代码

 svn co http://jqueryjs.googlecode.com/svn/tags/1.2.1

重要更改

相对动画

新的相对动画的 API 中存在一个严重错误,导致与现有动画样式冲突。为了解决这个问题,现在必须使用以下语法来执行相对动画

 $(...).animate({ height: "+=50px", width: "-=20%", fontSize: "+=2em" });

其中 += 表示“添加到当前位置”,-= 表示“从当前位置减去”。

.eq()

由于一些非常有说服力的论据,以及经过大量的重新考虑,.eq() 已经恢复了。许多插件依赖于此单一方法,而 .slice() 提供的替代方案 simply wasn’t as elegant a solution as what was originally provided.

jQuery 1.2.1 发布

发布时间: 作者:

这是针对 jQuery 1.2 的错误修复版本。您可以在 错误跟踪器 上查看修复内容的完整列表。

下载

压缩版 jQuery (14kb,使用 gzipping 压缩)
打包版 jQuery (26kb)
常规版 jQuery (77kb)

重要更改

相对动画

新的相对动画的 API 中存在一个严重错误,导致与现有动画样式冲突。为了解决这个问题,现在必须使用以下语法来执行相对动画
$(...).animate({ height: "+=50px", width: "-=20%", fontSize: "+=2em" });

其中 += 表示“添加到当前位置”,-= 表示“从当前位置减去”。

.eq()

由于一些非常有说服力的论据,以及经过大量的重新考虑,.eq() 已经恢复了。许多插件依赖于此单一方法,而 .slice() 提供的替代方案 simply wasn’t as elegant a solution as what was originally provided.

jQuery 1.2 发布

发布时间: 作者:

下载

jQuery 1.2
压缩版 jQuery (14kb,使用 gzipping 压缩)
打包版 jQuery (26kb)
常规版 jQuery (77kb)

新功能

部分 .load()

部分 .load() 允许您将 HTML 文档的片段加载到页面中,并通过 jQuery 选择器进行过滤。这与普通的 Ajax .load() 工作方式相同,只是您在检索的 URL 后面立即指定一个选择器。

跨域 $.getScript

您现在可以使用 getScript 动态加载和执行远程脚本。这可以用来加载 jQuery 插件或其他代码模块。

跨域 $.getJSON (使用 JSONP)

JSONP 是一种技术,允许您在多个域之间传输 JSON 数据。

jQuery 现在原生支持 JSONP - 如果您尝试从远程 URL 加载 JSON(通过 $.getJSON 或 $.ajax),则会为服务器提供额外的回调函数以进行解释。此外,如果服务器需要一个特殊的字段来指定您自己的回调函数名称,则可以在您的查询字符串中添加“=?”。

序列化大修

.serialize() 方法进行了重大改进,将 jQuery Forms 插件 提供的功能移植回 jQuery 核心。这意味着表单数据的序列化现在应该与浏览器通常发送到服务器的数据非常接近。

此外,还引入了一个新的 .serializeArray() 方法,它会序列化所有表单和表单元素(就像 .serialize() 方法一样),但会返回一个 JSON 数据结构供您使用。当处理大型表单时,这尤其有用,您希望对这些表单进行处理。

禁用缓存

在 $.ajax 调用中,您现在可以通过提供额外的 cache: false 标志来防止浏览器缓存请求。这将确保您可能正在执行的任何 GET 请求都将绝对检索页面的最新版本。
cache: false 始终向服务器发送新的请求。

« 返回 [[Release:jQuery 1.2|jQuery 1.2 版本说明]] 的完整内容。

.val() 大修

简单的 .val() 方法已经得到了急需的改进,使其更加有用。您现在可以设置一组单选按钮和复选框的选中状态,以及设置选择选项的选中状态。您可以通过传入要选择/选中项目的数组值或名称来实现这一点。(在 Firefox2 中失败,单选按钮在 IE7 中失败) 现在可以对选择元素调用 .val() 来获取其值。

.offset()

从 [https://jqueryjs.cn/plugins/project/dimensions Dimensions 插件] 移植过来,[[CSS/offset|.offset()]] 方法允许您找到元素相对于文档左上角的偏移量(作为“顶部”和“左边”)。

.height() / .width() 用于文档和窗口

.height() 和 .width() 现在可以在文档和窗口对象上使用,允许获取文档主体和窗口视窗的高度和宽度。

.stop()

停止所有指定元素上当前正在运行的动画。如果任何动画已排队运行,则它们将立即开始。

%/em 动画

动画现在可以使用 em 值或百分比值以及像素值来完成。它们甚至可以在同一个 animate() 调用中混合使用。

颜色动画

一个新的 [https://jqueryjs.cn/plugins/project/color 官方 jQuery 插件],通过使用新的 jQuery.fx.step 支持对元素的 CSS 颜色进行动画处理。

支持的 CSS 属性:“backgroundColor”;“borderBottomColor”;“borderLeftColor”;“borderRightColor”;“borderTopColor”;“color”;“outlineColor”。

颜色可以指定为预设的一系列命名颜色之一;使用 rgb 格式(例如“rgb(221,221,221)”);十六进制 (例如“#dddddd”);或简写十六进制 (例如“#ddd”)。

相对动画

相对动画的行为与普通动画相同,但它们的单位被指定为相对于元素的当前位置的相对位置,而不是绝对位置。

您可以通过编写数字和(可选)单位作为字符串,并在前面加上“+=”(对于添加到当前位置的相对动画)或“-=”(从当前位置减去的相对动画)来指定相对动画。

同时动画

一直以来,jQuery 中的动画都是自动排队的,这允许 animate() 调用进行链接。

现在,如果在 animate() 的选项中包含 queue: false 标志,那么该动画将不会进入队列,并将立即开始运行。

.queue() / .dequeue()

两个现有的内部 jQuery 排队方法已进行了调整,并使其更适合一般动画使用。

.queue() 可以用来访问和操作特定元素的动画队列。

添加了以下排队方法
* .queue()
返回第一个元素队列的引用(它是一个函数数组)。
* .queue(Function)
将一个新的函数添加到所有匹配元素的队列末尾,该函数将被执行。
* .queue(Array)
用这个新队列(函数数组)替换所有匹配元素的队列。

并添加了以下出队方法:.dequeue() 从队列的开头移除一个排队的函数,并执行它。

可扩展动画

您现在可以使用一个函数扩展 jQuery 动画,该函数在动画的每个步骤中被触发,改变正在被动画处理的元素的样式。它可以扩展到特定的 css 属性,甚至可以用来创建自定义动画类型。

例如,您可以在 .animate() 中传入一个额外的步骤函数来执行诸如动画同步之类操作。

命名空间事件

这是一个对插件作者特别有用的功能。您现在可以为绑定的事件处理程序提供一个私有名称,允许您稍后再次删除它们(而无需维护您正在监督的所有处理程序的私有缓存)。

.triggerHandler()

一个新方法,可以与原始 .trigger() 一起使用。此特定方法会触发元素上所有绑定的事件处理程序(针对特定事件类型),而不会执行浏览器的默认操作。

.wrapInner() / .wrapAll()

.wrapInner() 的设计目的是包装每个匹配元素(包括文本节点)的内部子内容;.wrapAll() 将将匹配集合中的所有元素包装到一个单独的包装元素中(这与 .wrap() 不同,在 .wrap() 中,匹配集合中的每个元素都将用一个元素进行包装)。

.replaceWith() / .replaceAll()

replaceWith 用指定的 HTML 或 DOM 元素替换所有匹配元素。.replaceAll 用匹配的元素替换指定选择器匹配的元素。

带有事件的克隆

.clone() 方法现在可以接受一个可选参数,如果为 true,它还会克隆所有克隆元素上的所有事件处理程序。

:has(selector)

这会匹配所有包含至少一个匹配指定选择器的元素的元素。这是对 XPath 选择器的替代[selector],包含在 jQuery 1.1 和更早版本中 - :has() 的行为相同。

:header

这会匹配所有标题(h1、h2、h3、h4、h5 和 h6 标签)。这对于构建页面的目录(尤其是在标题顺序重要的情况下)非常有用。

:animated

匹配当前正在通过至少一个动画进行动画处理的元素。

XPath 选择器插件

由于 jQuery 1.2 版本中移除了 XPath 选择器,因此引入了新的 [https://jqueryjs.cn/plugins/project/xpath XPath 选择器插件]。您可以使用此插件来获得自 jQuery 创建以来一直存在的 CSS/XPath 混合选择器。

.map()

将一组元素转换为另一组值(这些值可能或可能不是元素)。您可以使用它来构建值列表、属性、CSS 值,甚至执行特殊、自定义、选择器转换。它作为使用 $.map() 的便捷方法提供。

.prevAll() / .nextAll()

允许您查找当前元素之前或之后的所有同级元素。

.slice()

此方法的行为与数组的原生 .slice() 方法相同,允许您将 jQuery 集切成可重用的部分。

.hasClass()

新的 .hasClass() 方法是一个简单的便捷方法,位于 [[Traversing/is|.is()]] 之上,处理其最常见的用例(检查类名)。

.andSelf()

将 jQuery 堆栈上的前两个集合合并为一个匹配集合。

.contents()

查找匹配元素中的所有子节点(包括文本节点)。如果您对 iframe 元素执行此操作,它将返回其内部文档。

如何升级

如果您尚未升级,请升级到 jQuery 1.1.4。这将有助于消除您的代码使用的最后版本 jQuery 和当前版本之间的绝大多数意外情况。浏览弃用和移除的功能列表,确保您的代码中没有使用任何这些功能。如果您使用的任何插件仍然需要一些旧功能,您可以随意包含 jQuery 1.1 兼容性插件或 XPath 兼容性插件,具体取决于情况。

jQuery 1.1 兼容性插件

jQuery 1.2 版本中移除了一些功能。包含此插件允许您在 jQuery 1.2 的副本中拥有所有被移除的功能。

该插件的典型用法如下

XPath 兼容性插件

由于 jQuery 1.2 版本中移除了 XPath 选择器,因此引入了新的 XPath 选择器插件。您可以使用此插件来获得自 jQuery 创建以来一直存在的 CSS/XPath 混合选择器。

颜色动画插件

一个新的官方 jQuery 插件,支持使用新的 jQuery 动画 API 动画元素的 CSS 颜色。支持的 CSS 属性包括:‘backgroundColor’、‘borderBottomColor’、‘borderLeftColor’、‘borderRightColor’、‘borderTopColor’、‘color’、‘outlineColor’。

移除的功能

我们在 jQuery 1.2 版本中移除了一些相对未使用、导致混淆或效率低下的方法。在可能的情况下,我们提供了执行这些操作的替代方法。

与 jQuery 1.1 版本一样,jQuery 1.2 版本也提供了一个向后兼容性插件。因此,如果您希望继续使用这些特定方法,您可以使用该插件并继续这样做。

此外,为了处理 XPath 的更改,另一个独立的插件已经提供,它将在 jQuery 中处理 XPath 选择器功能。

DOM 操作

调用带有参数的 clone 方法已被弃用(clone 方法本身将保留)。现在,您应该执行以下操作,而不是调用.clone(false)您现在应该执行以下操作.clone().empty()代替。

DOM 遍历

.eq() 方法已被弃用,取而代之的是新的 .slice() 方法(其工作方式与数组的 slice 方法相同)。您可以像这样复制 .eq()

$("div").slice(0,1);

.lt() 方法已被弃用,取而代之的是新的 .slice() 方法(其工作方式与数组的 slice 方法相同)。

.gt() 方法已被弃用,取而代之的是新的 .slice() 方法(其工作方式与数组的 slice 方法相同)。

.contains() 方法已被弃用,取而代之的是使用常规的 .filter() 语句。您可以像这样复制 .contains()

$("div").filter(":contains(Your Text)");

Ajax

$("#elem").loadIfModified("some.php"): 此便捷方法已被移除,取而代之的是使用 $.ajax() 的长格式。

$.ajax({
  url: "some.php",
  ifModified: true,
  success: function(html){
    $("#elem").html(html);
  }
});

$.getIfModified("some.php"): 此便捷方法已被移除,取而代之的是使用 $.ajax() 的长格式。

$.ajax({
  url: "some.php",
  ifModified: true
});

$.ajaxTimeout(3000): 此便捷方法已被移除,取而代之的是使用更明确的 $.ajaxSetup() 的长格式。

$.ajaxSetup({timeout: 3000});

$(...).evalScripts(): 此方法在 jQuery 中不再必要 - 注入到文档中的所有 HTML 字符串中包含的脚本都会自动执行。不需要替代方法。