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 插件用于嵌入 Flash 电影,它在 1.04 的压缩版本中存在问题(http://jquery.lukelutman.com/plugins/flash/)
@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 之间的问题)。
它并不完美(例如,之后总是需要测试),但这是一个快速查找,用于检查您是否使用了 John 列出的任何函数
egrep ‘\.ancestors\(|\.width\(|\.height\(|\.top\(|\.left\(|\.position\(|\.float\(|\.overflow\(|\.color\(|\.background\(|\.id\(|\.title\(|\.name\(|\.href\(|\.src\(|\.rel\(|\.one.*+\(|\.un.*+\(‘ *.js
Pingback: sorgalla.com - jQuery 1.1a 和 jCarousel 0.1.5
Pingback: bassistance.de » jQuery 1.1a 发布
Pingback: jQuery 1.1 alpha - Scriptia
Pingback: Lançada a jQuery 1.1a « felipediesel.net
$(‘.select’).parents().addClass(‘test’); 不起作用。如何使用新方法获取(旧的)祖先?
John,为什么不更进一步,移除所有事件快捷方式,例如 click(),并使用 bind 代替?
Pingback: BorkWeb » jQuery 1.1a 发布
@Raymond: 如果您在使用当前压缩版本的 jQuery 时遇到问题,那么这绝对是一个错误。如果您能提交一个错误报告,以便我们进一步调查,这将有所帮助。
@alex: .ancestors() 和 .parents() 是(曾经是)相同的。.ancestors() 只是 .parents() 的别名。如果您在使用 .parents() 时遇到问题,那么您可能应该提交一个错误报告,因为这听起来像是新问题。
@Vladimir: 我们发现人们太频繁地使用 .event() 快捷方式,以至于不能删除它们。我们必须权衡保留快捷方式的“成本”与使用频率;所有其他方法都没有通过 ;-)
Pingback: danielyuen.hk 博客 : 2007-01-08 的链接
您确定是“one”,而不是“on”吗?就像 .on(“click”, fn) 那样?这样更有意义……
@Marcel,不,是“一次”。jQuery 使用 .bind() 进行通用事件绑定。.one() 方法会在事件触发一次后解除绑定。
@John - 就我所知,它与 IE 的 ActiveX 控件激活 (1,2) 特别相关。你可能需要向 Luke 咨询更多信息 (3)。
(1) http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp
(2) 我不知道该更讨厌谁,Eolas 提出这个问题,还是微软屈服于他们。
(3) http://jquery.lukelutman.com/plugins/flash/#activex
我刚刚升级了一个网站,我正在使用压缩的 1.1a 版进行测试 - 当我显示任何页面时,Safari 都会崩溃 - 以下代码会导致这种情况 - 只有在页面上存在外部链接时才会发生
$(“a[@href^=http://]”).not(“[@href*=’xxx.yyy.com/’]”).each(function() {
尽管这是一个 Safari 问题 - 但仍然值得了解。
为此提交了一个错误报告,问题是由后续发生的事情引起的,这些事情在每个传递的对象上都会发生
$(this).html( $(this).html() + ” ” );
在正式发布之前,还会发布其他 alpha 版本吗?
我知道这很简单,但这里有一个匹配废弃语法的 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’`
Pingback: Websites and stuff (need to think of a real name, I know) » Jquery 1.1alfa
我刚刚在演示页面上逐步浏览了使用 jQuery 显示/隐藏 div 的代码。我的天啊!我不得不遍历数百行代码才能隐藏一个 div。而且代码是什么,哎哟。如果这就是 JavaScript 的发展方向,我想我要退出。JSON 样式的编码已经够糟糕了,但是 jQuery 中的使用方式简直是令人发指。人们为了使用 jQuery 而不得不编写的语法也完全与任何看起来像脚本语言的东西相冲突。我真的很高兴我不必使用这些东西。使用 GWT 吧!这是前进的方向,而不是这种方式。
@d405: 我真的不知道你在说什么,所以我就说这些
是什么让选择速度加快了这么多?开始将 CSS 查询编译为 XPath 吗?
@Stephen: 我们只是重写了其中的大部分代码,对常见情况进行了高度优化(例如,“div .class”、“#foo #bar” 和 “div#foo”)。不幸的是,编译为 XPath 仍然不是跨浏览器的解决方案(Internet Explorer 不支持 HTML 文档的 XPath)。
@d405
请不要发表这种幼稚的负面评论
请在批评 jQuery 之前尝试一下... 我发现它是人们可以创建的最直观的 JS 框架... “大众的 JavaScript” :)
来自波兰欢乐俱乐部的问候 :)
d405 是个白痴的第一个线索
“JSON 样式的编码已经够糟糕了,但是 jQuery 中的使用方式简直是令人发指。”
嗯,是的,JSON 样式很糟糕?很抱歉让你失望,但这是 JavaScript 核心的一部分。
所有东西都是对象。甚至函数也是(但另一方面,我不指望你了解这一点)。
所有内容都以对象表示法编写。
如果你不知道这一点,也许你应该访问 http://www.lissaexplains.com/。它可能更适合你…
@d405: 试试这个
$(“d405”).hide().remove();
这太棒了。
不记得是谁的语录了... 但它的大致意思是
“只有当不再有任何东西可以删除时,设计才是完美的。”
我赞赏你做出的这些改变,让 jQuery 变得更好更小!
-Jed
Pingback: jQuery: Blog: » jQuery 1.1b
1.1b 的打包版本似乎存在错误(我使用了 http://dean.edwards.name/packer/ 以及默认选项)抛出“缺少语句前的 ;”!
不知道如何调试它 :-(
解包版本太棒了!!! :-)
Pingback: bassistance.de » jQuery 1.1b Release
Pingback: jQuery: » jQuery Birthday: 1.1, New Site, New Docs
Pingback: Learning jQuery » jQuery 1.1 Released!