jQuery 1.1a
As previously announced, today we’re bringing you the alpha release of jQuery 1.1. We’d really appreciate it if you could help us test this alpha, so that we can have a stand-up release this weekend – just in time for jQuery’s 1 Year Anniversary! (January 14th)
This is going to be a fantastic release. In fact, this release is so good that we’re going to be taking this entire week to tell you about what’s new and how you can best use it. The Evangelism team has a bunch of stuff lined up to get you introduced and ready to use this great new version of jQuery.
Here’s the quick-and-dirty on jQuery 1.1:
- Its selectors are 10-20x faster than those in jQuery 1.0.4.
- The documentation has been completely revamped.
- The complexity of the API has dropped by 47%.
- It has a ton of bug fixes.
- It has a bunch of great new features.
- … and it’s still the small 19KB that you’ve come to expect.
We’re going to have the full run down during the next couple days, but for right now, it’s shaping up to be a great release.
Download
- Download Uncompressed (Testing Only!)
- Please submit new bug reports here: New Bug Report
API Changes
NOTE: We will release a backwards compatibility plugin together with the full release of jQuery 1.1, when it is released this weekend.
It’s important to note that there’s been a lot of API changes. Some in the form of additions, some in the form of reorganization. If you’d like to help us test this alpha release, please keep these changes in mind:
:nth-child() now starts at 1, instead of 0. Our implementation of the CSS 3 selector started its numbering at 0, instead of 1. This is a bug fix, but one that may effect your code.
// 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)")
The following methods have been renamed/reorganized in this version, here is how you can continue to use them, as you would expect:
Old Way (1.0.x) | New Way (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) |
I realize that’s a long list – but you’d be surprised how much of that no one was using. By removing all of those methods we’ve been able to reduce the size of the jQuery API by 47%. We’re going to have more information about the API changes in particular, but for now, this list should help you to sort out any major differences in your code.
If you have any questions, feel free to post them here in the comments and we’ll get them answered right away.
What kind of compression will be used for the final version ??
Because there is a plugin for jquery to help with embedding Flash movies and it has problems with the compressed version of 1.04 ( http://jquery.lukelutman.com/plugins/flash/ )
@Raymond – jQuery has been using Dean Edwards’ Packer (http://dean.edwards.name/packer/) for compression, and I don’t think that’s going change. If you want to use a different compression script, you can try Dojo ShrinkSafe (http://alex.dojotoolkit.org/shrinksafe/) or JSMin (http://www.crockford.com/javascript/jsmin.html), but I haven’t tested these with jQuery yet (JSMin should be fine, though, if Luke’s recommending it).
John, in light of this, you might want to consider offering other compression options (unless we can solve whatever issue IE has with Dean’s Packer).
It’s not perfect (i.e. always test afterwards) – but here’s a quick grep to check if you’re using any of these functions John listed:
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 and jCarousel 0.1.5
Pingback: bassistance.de » jQuery 1.1a Release
Pingback: jQuery 1.1 alpha - Scriptia
Pingback: Lançada a jQuery 1.1a « felipediesel.net
$(‘.select’).parents().addClass(‘test’); does not work. how can i get the (old) ancestors with the new method?
John, why not go further and remove all event shortcuts like click() and use bind instead?
Pingback: BorkWeb » jQuery 1.1a Released
@Raymond: If you’re having trouble with the current compressed version of jQuery, then that’s definitely a bug. It would help if you could submit a bug report so that we could track it down further.
@alex: .ancestors() and .parents() were (are) the same thing. .ancestors() was just an alias for .parents(). If you’re having trouble with .parents(), then you should probably submit a bug report on that, as that sounds like something new.
@Vladimir: We found that people used the .event() shortcuts way too frequently in order to justify removing them. We had to balance the “cost” of keeping a shortcut in against how frequently it was used; all the other methods didn’t make the cut ;-)
Pingback: danielyuen.hk Blog : links for 2007-01-08
Are you sure it’s “one” and not “on”? As in .on(“click”, fn)? It would make more sense…
@Marcel, Nope, it’s “one.” jQuery uses .bind() for generic event binding. The .one() method unbinds it after it’s triggered once.
@John – From what I understand, it’s specifically related to IE’s ActiveX Control Activation(1,2). You’ll probably need to ask Luke for more info(3).
(1) http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp
(2) I don’t know who to hate more, Eolas for bringing up the whole issue, or Microsoft for giving in to them.
(3) http://jquery.lukelutman.com/plugins/flash/#activex
Just upgraded a site I am amking for testing using a compressed 1.1a – I have a crash in Safari whenever I display any page – the following code causes this – only when there is an external link on the page :
$(“a[@href^=http://]”).not(“[@href*=’xxx.yyy.com/’]”).each(function() {
Although it’s a safari issue – it’s still good to know.
Filled a bug report for this, the issue is caused by what happends next, which works on each passed object :
$(this).html( $(this).html() + ” ” );
Will there be any more alpha releases before the actual release?
I know it’s easy, but here’s a grep expression that matches the abadoned syntax.
[.](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
use it e.g. as in:
grep -E “this-expression” `find . -name ‘*.js’`
Pingback: Websites and stuff (need to think of a real name, I know) » Jquery 1.1alfa
I just stepped thru the code on the demo page that shows/hides a div using jquery. Oh my god ! I had to go through hundreds of lines of code to hide a div. And what code it was, euuuw. If this is the way Javascript is going then I think I’m getting out. The JSON style of coding is bad enough, but the way it’s been used in jQuery is an abomination. The syntax of what people have to write in order to use jQuery is also totally alien to anything that looks like a scripting language. I’m really glad I don’t have to use this stuff. Use GWT people! It’s the way forward, not this.
@d405: I honestly have no idea what you’re talking about, so I’ll just say this:
What sped up selection so much? Start compiling CSS queries to XPath?
@Stephen: We just rewrote large parts of it, highly optimizing for common situations (like “div .class”, “#foo #bar”, and “div#foo”). Unfortunately, compiling to XPath still isn’t a cross browser solution (Internet Explorer doesn’t have XPath support for HTML documents).
@d405
please refrain from such childish black PR
please try jQuery before judging it… i found it the most intuitive JSframework one could create… “javascript for masses” :)
Greeting from polish funclub :)
Clue 1 that d405 is a moron:
“The JSON style of coding is bad enough, but the way it’s been used in jQuery is an abomination.”
Uh, yeah, the JSON style is bad? Sorry to disappoint you, but that’s down to the core of Javascript.
EVERYTHING is an object. Even functions (but then again, I don’t really expect you to know that).
Everything is written in object notation.
If you don’t know that, then perhaps you should visit http://www.lissaexplains.com/ . It might be more your speed…
@d405: try this:
$(“d405”).hide().remove();
This is awesome.
Can’t remember who’s quote this is.. but it goes along the lines of
“A design is only perfect when there is no longer anything that can be removed”
I applaud you for these changes and making jquery even better and smaller!
-Jed
Pingback: jQuery: Blog: » jQuery 1.1b
There seems to be an error with the packed version of 1.1b (I used http://dean.edwards.name/packer/ with default options) throws “missing ; before statement” !
Don’t know how to debug it :-(
Unpacked version is awesome !!! :-)
Pingback: bassistance.de » jQuery 1.1b Release
Pingback: jQuery: » jQuery Birthday: 1.1, New Site, New Docs
Pingback: Learning jQuery » jQuery 1.1 Released!