jQuery 1.1a

发布于 作者

正如 之前宣布,今天我们发布了 jQuery 1.1 的 alpha 版本。我们非常感谢您能帮助我们测试这个 alpha 版本,这样我们就可以在本周末发布正式版,正好赶上 jQuery 的一周年纪念日!(1 月 14 日)

这个版本将是一个很棒的版本。事实上,这个版本非常棒,我们会花整整一周的时间来告诉您有哪些新功能,以及如何最好地使用它们。传教团队已经安排了一系列内容,让您了解这个新版本的 jQuery,并准备好使用它。

以下是 jQuery 1.1 的快速概览

  • 它的选择器比 jQuery 1.0.4 快 10-20 倍。
  • 文档 已完全重新设计。
  • API 的复杂性降低了 47%
  • 它修复了许多错误。
  • 它有许多很棒的新功能。
  • … 而且它仍然是您所熟悉的 19KB 小文件。

我们会在接下来的几天里详细介绍,但现在,它看起来将会是一个很棒的版本。

下载

API 更改

注意: 我们将在本周末发布 jQuery 1.1 的正式版时,同时发布一个向后兼容插件。

需要注意的是,API 已经发生了很多变化。有些是添加,有些是重组。如果您想帮助我们测试这个 alpha 版本,请牢记这些更改

:nth-child() 现在从 1 开始,而不是 0。 我们对 CSS 3 选择器的实现从 0 开始编号,而不是 1。这是一个错误修复,但可能会影响您的代码。

// 1.0.x: Get the first column from a table
$("td:nth-child(0)")

// 1.1: Get the first column from a table
$("td:nth-child(1)")

以下 方法在本版本中已被重命名/重组,以下是如何继续使用它们,就像您预期的那样

旧方式 (1.0.x) 新方式 (1.1)
.ancestors() .parents()
.width() .css(“width”)
.height() .css(“height”)
.top() .css(“top”)
.left() .css(“left”)
.position() .css(“position”)
.float() .css(“float”)
.overflow() .css(“overflow”)
.color() .css(“color”)
.background() .css(“background”)
.id() .attr(“id”)
.title() .attr(“title”)
.name() .attr(“name”)
.href() .attr(“href”)
.src() .attr(“src”)
.rel() .attr(“rel”)
.oneblur(fn) .one(“blur”,fn)
.onefocus(fn) .one(“focus”,fn)
.oneload(fn) .one(“load”,fn)
.oneresize(fn) .one(“resize”,fn)
.onescroll(fn) .one(“scroll”,fn)
.oneunload(fn) .one(“unload”,fn)
.oneclick(fn) .one(“click”,fn)
.onedblclick(fn) .one(“dblclick”,fn)
.onemousedown(fn) .one(“mousedown”,fn)
.onemouseup(fn) .one(“mouseup”,fn)
.onemousemove(fn) .one(“mousemove”,fn)
.onemouseover(fn) .one(“mouseover”,fn)
.onemouseout(fn) .one(“mouseout”,fn)
.onechange(fn) .one(“change”,fn)
.onereset(fn) .one(“reset”,fn)
.oneselect(fn) .one(“select”,fn)
.onesubmit(fn) .one(“submit”,fn)
.onekeydown(fn) .one(“keydown”,fn)
.onekeypress(fn) .one(“keypress”,fn)
.onekeyup(fn) .one(“keyup”,fn)
.oneerror(fn) .one(“error”,fn)
.unblur(fn) .unbind(“blur”,fn)
.unfocus(fn) .unbind(“focus”,fn)
.unload(fn) .unbind(“load”,fn)
.unresize(fn) .unbind(“resize”,fn)
.unscroll(fn) .unbind(“scroll”,fn)
.ununload(fn) .unbind(“unload”,fn)
.unclick(fn) .unbind(“click”,fn)
.undblclick(fn) .unbind(“dblclick”,fn)
.unmousedown(fn) .unbind(“mousedown”,fn)
.unmouseup(fn) .unbind(“mouseup”,fn)
.unmousemove(fn) .unbind(“mousemove”,fn)
.unmouseover(fn) .unbind(“mouseover”,fn)
.unmouseout(fn) .unbind(“mouseout”,fn)
.unchange(fn) .unbind(“change”,fn)
.unreset(fn) .unbind(“reset”,fn)
.unselect(fn) .unbind(“select”,fn)
.unsubmit(fn) .unbind(“submit”,fn)
.unkeydown(fn) .unbind(“keydown”,fn)
.unkeypress(fn) .unbind(“keypress”,fn)
.unkeyup(fn) .unbind(“keyup”,fn)
.unerror(fn) .unbind(“error”,fn)

我知道这是一个很长的列表,但您会惊讶于有多少人没有使用这些方法。通过移除所有这些方法,我们能够将 jQuery API 的大小减少 47%。我们将在后面详细介绍 API 更改,但现在,这个列表应该可以帮助您找出代码中的任何重大差异。

如果您有任何问题,请随时在评论中发布,我们会尽快解答。

关于“jQuery 1.1a”的 33 条评论

  1. @Raymond – jQuery 一直使用 Dean Edwards 的 Packer (http://dean.edwards.name/packer/) 进行压缩,我认为不会改变。如果您想使用其他压缩脚本,可以尝试 Dojo ShrinkSafe (http://alex.dojotoolkit.org/shrinksafe/) 或 JSMin (http://www.crockford.com/javascript/jsmin.html),但我还没有在 jQuery 中测试过这些(JSMin 应该没问题,如果 Luke 建议使用的话)。

    John,鉴于此,您可能需要考虑提供其他压缩选项(除非我们能够解决 IE 与 Dean 的 Packer 之间的问题)。

  2. 它并不完美(例如,之后总是需要测试),但这是一个快速查找,用于检查您是否使用了 John 列出的任何函数

    egrep ‘\.ancestors\(|\.width\(|\.height\(|\.top\(|\.left\(|\.position\(|\.float\(|\.overflow\(|\.color\(|\.background\(|\.id\(|\.title\(|\.name\(|\.href\(|\.src\(|\.rel\(|\.one.*+\(|\.un.*+\(‘ *.js

  3. Pingback: sorgalla.com - jQuery 1.1a 和 jCarousel 0.1.5

  4. Pingback: bassistance.de » jQuery 1.1a 发布

  5. Pingback: jQuery 1.1 alpha - Scriptia

  6. Pingback: Lançada a jQuery 1.1a « felipediesel.net

  7. $(‘.select’).parents().addClass(‘test’); 不起作用。如何使用新方法获取(旧的)祖先?

  8. John,为什么不更进一步,移除所有事件快捷方式,例如 click(),并使用 bind 代替?

  9. Pingback: BorkWeb » jQuery 1.1a 发布

  10. @Raymond: 如果您在使用当前压缩版本的 jQuery 时遇到问题,那么这绝对是一个错误。如果您能提交一个错误报告,以便我们进一步调查,这将有所帮助。

    @alex: .ancestors() 和 .parents() 是(曾经是)相同的。.ancestors() 只是 .parents() 的别名。如果您在使用 .parents() 时遇到问题,那么您可能应该提交一个错误报告,因为这听起来像是新问题。

    @Vladimir: 我们发现人们太频繁地使用 .event() 快捷方式,以至于不能删除它们。我们必须权衡保留快捷方式的“成本”与使用频率;所有其他方法都没有通过 ;-)

  11. Pingback: danielyuen.hk 博客 : 2007-01-08 的链接

  12. Marcel Popescu 说:

    您确定是“one”,而不是“on”吗?就像 .on(“click”, fn) 那样?这样更有意义……

  13. 我刚刚升级了一个网站,我正在使用压缩的 1.1a 版进行测试 - 当我显示任何页面时,Safari 都会崩溃 - 以下代码会导致这种情况 - 只有在页面上存在外部链接时才会发生
    $(“a[@href^=http://]”).not(“[@href*=’xxx.yyy.com/’]”).each(function() {

    尽管这是一个 Safari 问题 - 但仍然值得了解。

  14. 为此提交了一个错误报告,问题是由后续发生的事情引起的,这些事情在每个传递的对象上都会发生
    $(this).html( $(this).html() + ” ” );

  15. 我知道这很简单,但这里有一个匹配废弃语法的 grep 表达式。

    [.](ancestors|width|height|top|left|position|float|overflow|color|background|id|title|name|href|src|rel|oneblur|(one|un)(focus|load|resize|scroll|unload|click|dblclick|mousedown|mouseup|mousemove|mouseover|mouseout|change|reset|select|submit|keydown|keypress|keyup|error))\s*[(]|:nth-child

    例如,在以下命令中使用它

    grep -E “this-expression” `find . -name ‘*.js’`

  16. Pingback: Websites and stuff (need to think of a real name, I know) » Jquery 1.1alfa

  17. 我刚刚在演示页面上逐步浏览了使用 jQuery 显示/隐藏 div 的代码。我的天啊!我不得不遍历数百行代码才能隐藏一个 div。而且代码是什么,哎哟。如果这就是 JavaScript 的发展方向,我想我要退出。JSON 样式的编码已经够糟糕了,但是 jQuery 中的使用方式简直是令人发指。人们为了使用 jQuery 而不得不编写的语法也完全与任何看起来像脚本语言的东西相冲突。我真的很高兴我不必使用这些东西。使用 GWT 吧!这是前进的方向,而不是这种方式。

  18. @Stephen: 我们只是重写了其中的大部分代码,对常见情况进行了高度优化(例如,“div .class”、“#foo #bar” 和 “div#foo”)。不幸的是,编译为 XPath 仍然不是跨浏览器的解决方案(Internet Explorer 不支持 HTML 文档的 XPath)。

  19. @d405

    请不要发表这种幼稚的负面评论
    请在批评 jQuery 之前尝试一下... 我发现它是人们可以创建的最直观的 JS 框架... “大众的 JavaScript” :)

    来自波兰欢乐俱乐部的问候 :)

  20. d405 是个白痴的第一个线索
    “JSON 样式的编码已经够糟糕了,但是 jQuery 中的使用方式简直是令人发指。”

    嗯,是的,JSON 样式很糟糕?很抱歉让你失望,但这是 JavaScript 核心的一部分。
    所有东西都是对象。甚至函数也是(但另一方面,我不指望你了解这一点)。

    所有内容都以对象表示法编写。
    如果你不知道这一点,也许你应该访问 http://www.lissaexplains.com/。它可能更适合你…

  21. 这太棒了。
    不记得是谁的语录了... 但它的大致意思是
    “只有当不再有任何东西可以删除时,设计才是完美的。”

    我赞赏你做出的这些改变,让 jQuery 变得更好更小!

    -Jed

  22. Pingback: jQuery: Blog: » jQuery 1.1b

  23. Pingback: bassistance.de » jQuery 1.1b Release

  24. Pingback: jQuery: » jQuery Birthday: 1.1, New Site, New Docs

  25. Pingback: Learning jQuery » jQuery 1.1 Released!