我想借此机会宣布 jQuery 1.0 的第一个版本(称为 jquery-1.0a)。这个新的 1.0 版本旨在全面、体积小巧且没有错误。它将在很长一段时间内得到支持,直到可以预见的未来。(这不是 1.0 的最终版本,最终版本将在完成全面测试后发布。)
此版本目前可从以下 URL 获得
https://jqueryjs.cn/src/jquery-1.0a.js
我需要大家做的是下载这个新版本并用它测试你们自己的插件或应用程序。如果发现任何奇怪的错误(与下面提到的更改无关),请在新的 jQuery 错误跟踪器中发布关于它的错误。(错误越详细越好 – 并且非常感谢测试页面。)
proj.jquery.com 网站只是暂时的,目前还不完整,将在 1.0 正式版本发布时迁移到 jquery.com。这个新网站包含一个完整的 Wiki,因此如果您看到任何想添加的内容,请随意添加。
我要感谢所有帮助实现此版本发布的人。如果没有所有为项目贡献时间和金钱的人,这个版本就不可能实现。整个社区在提供支持和反馈方面是无价的,它指引着整个项目的进展。感谢大家,并享受它 - 我期待着你们的反馈。
— John Resig
以下是此版本中更改的发布说明。这包括许多新方法、改进、JavaScript 纯粹主义者会喜欢的东西,以及对插件开发者的更改。它们都已按类别整理。
新方法
(注意:其中一些方法已经存在一段时间了,只是从未公开宣布过)
DOM
– $().text()
返回所有匹配元素的文本内容,合并在一起。这对 HTML 和 XML 文档都有效。
– $().html() 和 $().val()
这两个方法分别充当 innerHTML 和 value 的 getter 和 setter。调用 .html() 将返回匹配的第一个元素的 HTML 内容。调用 .html(“foo”) 将把所有匹配元素的 HTML 内容设置为“foo”。
– $().toggleClass(“class”)
如果类存在于特定元素上,它将被删除;如果不存在,它将被添加。
– $().remove()
从 DOM 中删除所有匹配的元素。
– $().empty()
删除所有匹配元素的所有子节点。
– $().parent(“filter”)
匹配所有匹配元素的父元素,并根据可选的“filter”进行过滤。
– $().parents(“filter”)
匹配所有匹配元素的所有祖先元素,并根据可选的“filter”进行过滤。
– $().siblings(“filter”)
匹配所有匹配元素的所有兄弟元素,并根据可选的“filter”进行过滤。
– $().is(“filter”)
检查是否有任何匹配的元素与“filter”匹配,如果匹配,表达式返回“true”,否则返回“false”。
活动
– $().trigger(“event”)
触发所有匹配元素上的“event”事件。
– $().dobind()
现在有一个简写方式来触发所有匹配元素上的特定事件。
– $().toggle( function, function )
每当点击匹配的元素时,第一个函数被触发,再次点击时,第二个函数被触发,所有后续点击将继续轮流触发这两个函数。
效果
– $().fadeTo(speed, to, callback)
以一定“speed”将所有匹配元素淡化到特定“to”不透明度。完成时,将触发回调函数。
– $().animate( properties, speed, callback )
有一个新的通用函数用于执行自定义动画。“properties”包含一个自定义的键值对对象,表示要动画化的属性,例如
$(“div”).animate({ height: 40, top: 50}, “slow”);
– $().center() 已经移动到一个单独的插件中,不再是主要 fx 包的一部分。
AJAX
– $().ajaxStart( function ) 和 $().ajaxStop()
两种用于绑定回调侦听器以处理两个新事件的方法。ajaxStart 每当新的 AJAX 请求开始时(并且没有其他请求正在进行)被触发,ajaxStop 每当所有 AJAX 请求完成时被触发。这非常适合显示/隐藏“加载”消息。
– $().ajaxError( function ), $().ajaxSuccess( function ), 和 $().ajaxComplete( function )
这些都是通用方法,用于绑定回调函数以处理特定与 AJAX 相关的事件。ajaxComplete 每当 AJAX 事件完成时(不考虑其成功状态)被触发。ajaxError 和 ajaxSuccess 分别在请求失败或成功时触发。
– $.xml() 现在是 $.ajax()
– $.ajax( options )
AJAX 方法现在可以接受一个键值对选项对象,表示如下
$.ajax({ url: "request url", type: "POST, GET, etc", data: "A string of data to send to the server", // The three, afformentioned, callbacks complete: function(){}, success: function(){}, error: function(){} });
改进
– 现在使用 $() 等同于使用“new $(…)” – 因为 jQuery 现在是一个对象,速度快得多。
– 代码的大部分现在都带有完整的内联文档(包括注释和更清晰的变量名) – 这项工作尚未完全完成,但将在 1.0 正式版本发布之前完成。
– 动画现在可以根据浏览器使用的当前盒子模型方案确定元素的正确高度和宽度。
– 现在可以将 tr、td 和 th 元素追加/预先追加到表格和表格行中 – 它们的行为符合预期。
– $(document).ready() 已经得到了极大的改进。它现在在所有现代浏览器中都能完全按照预期工作,即使页面中有 Adsense。
– 所有效果现在都排队,例如
$(“div”).fadeIn().fadeOut()
将淡入所有 div,然后淡出(在淡入动画完成后)。但是,使用
$(“div”).fadeIn();
$(“span”).fadeOut();
将同时触发所有动画。效果仅按元素逐个排队。
– 动画完成后,元素的高度和宽度会自动设置为“auto”(但前提是高度等于“auto”高度,例如)。
– jQuery 在 IE 中强制布局,即使是还没有布局的元素。
JavaScript 纯粹主义者
– jQuery 现在完全包含在“jQuery”命名空间中,并动态映射到“$”。这几乎不会对您现有的代码产生任何影响,除了它可以使代码更加纯粹。
– 现在对现有的 $() 函数的支持是通用的(它不查找 Prototype,而只查找 $ 函数)。
插件开发者
– 旧的属性 .$jquery 现在是 .jquery
– $.apply() 已被删除。
– jQuery 现在将一个名为“undefined”的全局变量设置为 undefined。您可以在代码中使用它:foo === undefined。
– 类操作函数现在位于 jQuery.className.* 中。
– jQuery.browser 包含一个字符串,表示用户使用的浏览器,它可以是:safari、opera、msie、mozilla 或其他。
– 如果当前浏览器支持 W3C CSS 盒子模型,jQuery.boxModel 为 true,否则为 false。
– $.getCSS 现在是 $.css
– $.parents() 可以用于获取元素的所有祖先元素
– 所有与事件相关的函数都在 jQuery.event.* 中。
– fx 命名空间现在包含在 jQuery.fx.* 中。
– 现在不再有 fx.Top/Left/Height/Width/Opacity 函数,它们都已迁移到新的 $().animate() 函数中(该函数还处理所有排队)。
– $.param( array )
现在可以接受一个元素数组,它们的名称和值将被序列化为一个字符串。