我想借此机会宣布 jQuery 1.0 的第一个版本发布(命名为 jquery-1.0a)。这个新的 1.0 版本旨在做到完全全面、体积小巧、并且没有错误。它将在很长一段时间内得到支持,直至可预见的未来。(这不是 1.0 的最终版本,将在完成全面的测试后发布)
目前,这个版本可以在以下 URL 下载:
https://jquery.org.cn/src/jquery-1.0a.js
我需要大家做的是下载这个新版本,并用你们特定的插件或应用程序进行测试。如果您发现任何奇怪的错误(与以下提到的更改无关),请在新的 jQuery Bug Tracker 中提交错误报告(您提供的错误描述越精确越好,并且非常感谢提供测试页面)
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 )
每当单击匹配的元素时,将触发第一个函数;再次单击时,将触发第二个函数;所有后续单击将继续在两个函数之间循环。
Effects
– $().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();
将同时触发所有动画。效果仅按元素逐个排队。
– 动画完成后,元素的 height 和 width 会自动设置为 ‘auto’(但仅当 height 等于 ‘auto’ height 时,例如)。
– jQuery 强制在 IE 中进行布局,即使元素尚未拥有它。
Javascript 纯粹主义者
– jQuery 现在完全包含在 ‘jQuery’ 命名空间中,并动态映射到 ‘$’。这几乎不会影响您的现有代码,除了它使代码更加纯粹。
– 对现有 $() 函数的支持现在是通用的(即它不查找 Prototype,而只是 $ 函数)。
插件开发者
– 旧属性 .$jquery 现在是 .jquery
– $.apply() 已删除。
– jQuery 现在将一个名为 ‘undefined’ 的全局变量设置为 undefined。您可以随意在代码中使用它:foo === undefined。
– 类操作函数现在位于 jQuery.className.* 中。
– jQuery.browser 包含一个字符串,表示用户使用的浏览器,可以是:safari、opera、msie、mozilla 或 other。
– jQuery.boxModel 如果当前浏览器支持 W3C CSS 盒模型,则为 true,否则为 false。
– $.getCSS 现在是 $.css
– $.parents() 可用于获取元素的所有祖先元素
– 所有与事件相关的函数都在 jQuery.event.* 中。
– fx 命名空间现在包含在 jQuery.fx.* 中。
– 不再存在 fx.Top/Left/Height/Width/Opacity 函数,它们都已委托给新的 $().animate() 函数(它还处理所有排队)。
– $.param( array )
现在可以接受一个元素数组,其名称和值将被序列化为字符串。
