jQuery 1.0 – Alpha 版本发布

发表于 作者

我想借此机会宣布 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。这个新网站包含一个完整的维基,所以如果您看到任何您想添加的内容,请随时添加。

我要感谢所有帮助使此版本发布成为可能的人。如果没有所有为该项目贡献时间和金钱的人,这个版本就不会发布。整个社区在提供支持和反馈方面非常宝贵,指导了整个项目的进展。谢谢大家,享受 - 我期待您的反馈。

— John Resig

以下是此版本中更改的发布说明。这包括许多新方法、改进、Javascript 纯粹主义者会喜欢的东西以及针对插件开发人员的更改。它们都已按类别进行整理。

新方法

(注意:其中一些方法已经存在一段时间了,但只是从未公开宣布过。)

DOM

– $().text()
返回所有匹配元素的文本内容,合并在一起。这适用于 HTML 和 XML 文档。
– $().html() 和 $().val()
它们都充当 innerHTML 和 value 的获取器和设置器。调用 .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’。完成后,将触发 callback。
– $().animate( properties, speed, callback )
有一个新的通用函数用于执行自定义动画。’properties’ 包含一个自定义键/值对对象,这些对象与您想要动画化的属性相关联,例如
$(“div”).animate({ height: 40, top: 50}, “slow”);
– $().center() 已移至单独的插件,不再包含在主 fx 包中。

AJAX

– $().ajaxStart( function ) 和 $().ajaxStop()
用于绑定回调侦听器以处理两个新事件的两个方法。每当新的 AJAX 请求开始时(并且没有其他请求正在进行时),ajaxStart 就会被触发,每当所有 AJAX 请求完成时,ajaxStop 就会被触发。这非常适合显示/隐藏 ‘加载’ 消息。
– $().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 或 other。
– jQuery.boxModel 如果当前浏览器支持 W3C CSS 盒模型,则为 true,否则为 false。
– $.getCSS 现在是 $.css
– $.parents() 可用于获取元素的所有祖先元素
– 所有与事件相关的函数都在 jQuery.event.* 中。
– fx 命名空间现在包含在 jQuery.fx.* 中。
– 不再存在任何 fx.Top/Left/Height/Width/Opacity 函数,它们都被转移到新的 $().animate() 函数中(该函数也处理所有排队)。
– $.param( array )
现在可以接受一个元素数组,这些元素的名称和值将被序列化为字符串。

关于 “jQuery 1.0 – Alpha 版本发布” 的 16 条想法

  1. Jon Combe 说道:

    哇,恭喜这个最新版本。

    我仅仅看了几天,就已经爱上它了。与其他一些替代方案相比,它绝对棒极了。

    对我来说,它唯一缺少的东西(它可能已经存在,但我错过了)是访问 XML 属性。如果我可以……
    $(“somenode”, myXML).each(function(i) {
    alert($(“somenode, myXML).get(i).getAttribute(“myValue”));
    }
    ……我简直要发狂了。

    还有 $().center() 被移到哪里了,以便我再次使用它?

    这是一个很棒的软件包。干得好!

  2. Michal Tatarynowicz 说道:

    恭喜 :)

    我计划在一个朋友的投资组合网站上使用 jQuery,我将尝试将其与我的事件代码集成,该代码提供

    – event.mouse() 返回鼠标位置(相对于窗口和页面)和按钮向上/向下数据;代码跟踪 onmouseup/onmousedown 事件,以提供有关当前按下鼠标按钮的可靠信息

    – event.modifier() 和 event.key() 返回有关按下键和活动键修饰符的信息

    – 跨浏览器一致的 event.src 和 event.target

  3. Johan Sundström 说道:

    对 $().is(filter) 的反应 - 在函数式语言中,这种方法通常称为 “any”,并且有一个配套方法 “all”,当 *所有* 元素与过滤器匹配时返回 true。我不介意在 jQuery 中看到相同的功能,但也不会因为没有它而感到冒犯。

  4. yurivish 说:

    我只想感谢您参与这个项目,并告诉您它对我来说有多有用。:)

    但是,有一件事我真的很想看到 - 能够使用函数作为参数调用 filter()。也许这已经存在了,但我还没有找到。

    该函数将返回 true 或 false,并且它将像 each 一样工作,只是返回函数中验证为 true 的元素。示例

    (‘a’).filter(function() {
    return this.href == ‘http://google.com’;
    }).addClass(‘googleLink’);

  5. Logic 说:

    哇,John.. 对性能改进表示赞赏。自您在 2006 年 1 月首次发布以来,jQuery 一直是企业内部网的基础 - 新版本经过测试并完美地交换。认为您会通过最新版本 1.0a 赞赏这些结果,因为它实现了 270% 的整体增益(通过 firefox/firebug console.time() 测试)。以下是界面各个部分(菜单、状态栏、排序引擎等使用 jQuery 以非侵入式方式添加功能)的初始化时间(以毫秒为单位)

    版本密钥
    jq2006may23 / jq1.0a = 增益%

    性能(以毫秒为单位)
    47 / 15 = 313%
    46 / 15 = 307%
    47 / 15 = 313%
    35 / 12 = 292%
    23 / 8 = 288%
    25 / 8 = 313%
    37 / 11 = 336%
    48 / 15 = 320%
    13 / 4 = 325%
    69 / 21 = 329%

    整体(独立线性初始化)
    850 / 314 = 271% (OSX)
    642 / 231 = 278% (XP)

    网络作为桌面?有了这些数字...... 只是时间问题。:)

  6. Antonio 说:

    它看起来很好 :) 特别是加速。

    但是:作为一个刚接触 jQuery 的人,我发现这有点反直觉
    > 调用 .html() 将返回匹配的第一个元素的 HTML 内容
    > 元素。调用 .html(“foo”) 将设置所有匹配元素的 HTML 内容
    > 为“foo”。

    我认为直观性是 jQuery 的强项之一,因此这种 getter 和 setter 的二元性让我感到惊讶。它在其他函数中使用吗?我应该重新阅读文档吗?因为如果它在那里,我完全错过了它。

  7. refactored 说:

    $() 的 XPath 实现有任何改进吗?现在 .parents() 可用后,我们有祖先轴吗?

  8. 嘿,这是我的第二条评论。:)

    我还想知道您是否可以包含一个 (‘#id’).hasClass() 函数,该函数根据元素是否具有某个类返回 true 或 false。

  9. Giel Berkers 说:

    我已经使用 jQuery 一段时间了。我在我的 CMS 和我创建的网站上使用它,我必须说我真的很喜欢它!我主要使用它来使我的 Web 表单更易访问(如果用户忘记了必需的字段,如果 Web 表单需要自动获取更多选项等)......

    给您竖起三个大拇指,John!我当然希望 jQuery 能坚持很长时间!我期待着最终的 1.0 版本(也许还有完整的文档?)!

  10. Nilesh 说:

    非常感谢您创建 jQuery,使用它真的很简单,而且很有趣。我迫不及待地想看到将拖放和其他酷炫的 UI 添加到 jQuery 中,它已经很强大,但我感觉它只会变得更好 :)

    感谢您,以及所有可能在途中提供帮助的人,这非常值得花费时间和心思。

    希望 jQuery 能长寿;)

    明年或今年,或者在 JavaScript 2.0 发布时,应该很有趣。

    我唯一要建议的是,可下载的文档,CHM 或 PDF 或其他内容,我已经打印了备忘单(函数的可视布局),但我正在寻找更详细的脱机文档。也许如果我能找到一些时间,我会制作一个详细的备忘单。

    玩得开心,
    Nilesh

  11. Nilesh 说:

    顺便说一句,任何尝试使用 html() 与 textarea 的人,您可能想使用以下内容......

    $(‘#my_textareaID’).set(‘value’, ‘abc value here’);

    因为执行一个简单的 $(‘#PX_RT_SNOTE_170’).html(‘abc ..’) 不会设置值。

    只是一个提醒。因此,要清除一个 textarea,请使用类似 $(‘#my_textareaID’).set(‘value’, ”); 的内容

    html() 应该在 textare 添加一个额外的元素吗?还是一个错误?如果我在 Firefox 中使用 fireBug 检查 textarea,它会显示类似 innerhtml=’abc.’ 的内容,并且该值显示为’abc.’,但 textarea 从未使用 .html(‘abc’) 更新。

    无论如何,希望这对某人有所帮助 :)

  12. person 说:

    我知道这不是一个问答论坛,所以把它当作一个人的证据吧 :)

    给定一个 $(‘#formtag’),是否有方法序列化整个表单(无需循环遍历其元素)以复制 POST 提交?我知道 .val(),并且看到有关 .form() 的内容,但我从未能使其正常工作。

    我使用的是 1.0 alpha。

    感谢您的任何帮助。

    我爱 jQuery,而且不再觉得 JavaScript 那么乏味了。现在可能要更多地回到 Web 开发中。

  13. Wally Glutton 说:

    在“父级”函数中

    var ret = jQuery.map(this.cur,”d.parentNode”);

    “d” 应该是一个“a”。