jQuery Community Updates For December 2010

Posted on by

Welcome to the December jQuery Community Update. We hope you had an enjoyable break with your families and would like to wish everyone in the community a happy new year!

In today’s post we’ll be presenting updates on both jQuery Core and jQuery UI. We would appreciate your comments and feedback on them!

The Road to jQuery 1.5

The jQuery team has been hard at work this month preparing for a jQuery 1.5 release. Some of updates in this release represent our continued commitment to stability and consistency through bug fixes and browser behavior normalization, while others are important rewrites that will improve the performance, maintainbility, and versatility of the library.

What’s changed?

You can find a complete list of the changes we’ve made under the section of this post titled ‘Change Log’. The largest update currently available is our new overhauled $.ajax component, which is explained below by its author, Julian Aubourg:

The first change you’ll see in the ajax component is probably the new signature: jQuery.ajax( [ url ] , [ options ]). This allows us to fetch a URL with default options more easily. Of course, that’s just the tip of the iceberg since the entire thing has been rewritten from the ground-up to provide many new features.

Every request type now supports timeout and abort. Native XHR objects are now hidden from the developer and a new, jQuery-specific object with the same basic interface is provided as a replacement. This “jXHR” object provides the usual properties and methods to set & get headers, abort requests, and view readyState, responseXML, and responseText—but unlike a native XHR object, it also acts as a Promise. Promises allow you to add success, error or complete callbacks even after a request has completed; for instance, it is now possible to write things like jQuery.getJSON( url ).error( errorCallback ), and it will always work, regardless of the state of the original request.

Internally, the new ajax component features a pluggable architecture that makes it easy to define new custom dataTypes and transports. Custom dataTypes allow you to provide a consistent response object to your application code no matter the original data format, and custom transports allow you to do things like fake ajax requests for testing, use browser-specific network objects (like XDomainRequest), or use entirely different mechanisms for performing remote calls (like iframe or postMessage) without needing to write walls of code. Best of all, any such addition has access to the full power of jQuery.ajax right off the bat (parameter serialization, timeout, deferred callbacks, etc), and is exposed to application code using the same familiar $.ajax API that you already know.

Finally, some flexibility has been added to existing ajax options, and new ones have been added. For instance:

  • You can provide an array of callbacks for success, error or complete. Non-functions are filtered and arrays are flattened, so you can easily add a complete handler before all the others simply by doing options.complete = [ yourCompleteCallback , options.complete ]!
  • The new “headers” option makes it possible to set a map of request headers, avoiding the hassle of requiring a beforeSend callback just to set headers.

Great care has been taken to ensure existing unit tests passed, and numerous other tests have been added to help ensure everything functions as expected and doesn’t break existing code.

How can I help?

As always, we would like to invite the community to contribute new patches or help us test changes so that we can identify and correct any issues as soon as possible.

To perform testing, just try dropping the development version of jQuery (jQuery-GIT) into a copy of your existing application. If you hit an exception or some weirdness occurs, log in to the bug tracker and file a bug. Be sure to set the version drop-down to “git”. You can also test code on jsFiddle by selecting “jQuery 0 GIT” from the drop-down menu in the sidebar.

To contribute patches, Rick Waldron has written an excellent guide to jQuery bug fixing that walks through getting started with git, building and testing jQuery, and finding new bugs to work on. If you plan on submitting patches, you should also join the #jquery-dev channel on Freenode, which is where most discussions about jQuery development occur.

Current Change Log

  • 1.Rewrite of the Ajax module by Julian Aubourg. This is the most significant change in this release and brings a number of performance, stability, and feature improvements to $.ajax. More information can be found above. #7195
  • 2.jQuery now registers itself as a CommonJS async module. This allows jQuery to participate in browser module loading with compatible loaders such as RequireJS and Yabble. #7102
  • 3.Removed the possibility of expando collisions when using noConflict() (V8 is fast!). The expando string now uses a random number + jQuery version to differentiate between instances of jQuery instead of millisecond clock time. #6842
  • 4.Deduplicated code in $.get and $.post. #7847
  • 5.When a native browser event is bubbling up the DOM, make sure that the correct isDefaultPrevented value is reflected by jQuery’s Event object. #7793
  • 6.No longer cache non-html strings in buildFragment to avoid possible collision with the names of Object methods like toString. Testing shows this may also provide modest performance improvements. #6779
  • 7.Updated cloneCopyEvent so that it does not create superfluous data objects when cloning elements. Exposes a new method, $.hasData, for determining whether or not an object has any data. #7165
  • 8.Use a for loop rather than for/in loop when copying events so that code will work with an augmented Array.prototype. #7809, #7817
  • 9.Fixed fadeIn not working properly with inline elements. #7397
  • 10.Rewrote IE’s clone function to function properly in all known cases. #4386, #5566, #6997
  • 11.Fixed IE breaking when dispatching a ‘submit’ event on plain JS objects. #6398
  • 12.Fixed a regression in 1.4 that caused cache control to be set incorrectly for script transport. #7578
  • 13.Improve performance of get() for negative indices. #5476
  • 14.hasClass, removeClass didn’t work in IE if the attribute contained a carriage return (\r) character. #7673
  • 15.Fix a regresion in 1.4.4 where calling $.fn.data without arguments breaks on non-DOM elements. #7524
  • 16.Fix memory leaks in IE caused by the custom abort function of $.ajax. #6242
  • 17.Prevent live events from firing on disabled elements in IE. #6911
  • 18.Fixed a regression in 1.4.3 that caused sending a Location object to $.ajax to no longer work. #7531

jQuery UI 1.8.7 and Spinner, Menu, & Tooltip

The jQuery UI team have also been busily working away on new stuff. Here are some updates from them:

jQuery UI 1.8.7 was released since our last community update. This brought support for jQuery 1.4.4 but also provided noteable updates to Button, Progressbar and Datepicker. For the full details of this release, please read the jQuery UI 1.8.7 release notes.

Also, three new plugins just landed on the jQuery UI master branch, courtesy of Jörn Zaefferer: Spinner, Menu and Tooltip. These three widgets have been in development for some time and each has had their own milestone release. For more information on these new widgets you can read about them on their dedicated release pages above. We would like to invite the community to test and provide feedback on these new widgets and if you discover any bugs or issues that you need to report, instructions for doing so can be found at the jQuery UI Development Center.

jQuery Weekly Development Meetings

Beginning on January 4th 2011, we will be trialing the idea of a jQuery development meeting of core developers and contributors each week in the #jquery-meeting channel on freenode. Agendas for these meetings will be made available in advance and any members of the jQuery community that would like to attend are more than welcome to. Our first meeting will be held on Tuesday January 4th at 9PM EDT and the topics of discussion will be the jQuery 1.5 roadmap, ticket triage and a discussion on infrastructure. The complete agenda for this meeting can be found here.

Wijmo on the jQuery Podcast

For fans of the Official jQuery Podcast, we would like to remind you that Episode 40 is now available for streaming or download. In this episode, we talk to Chris Bannon of ComponentOne about the new jQuery UI-based library called Wijmo.


Has jQuery helped make your development life a little easier? As you may know, jQuery is an open-source project that relies on the time and effort of our valued volunteers and community members and is financed entirely through donations from the general public. If you’ve found jQuery useful, we would like to humbly ask that you consider making a small contribution (even $10 goes a long way). The jQuery project is a part of the Software Freedom Conservancy, so any donation you make is fully tax-deductible. For more information on financial contribution, please visit http://jquery.org/donate.

If you can’t donate any money, we’re always in need of talented software developers, IT professionals, and nerds of all stripes to help develop and maintain jQuery and its related properties. If you’re interested in contributing some time to help make jQuery great, please get in touch with a team member, or ask in the #jquery channel on Freenode.

That’s it for this update! Thanks for reading; we look forward to your feedback.

Team Spotlight: The jQuery Bug Triage Team

Posted on by

Allow me to introduce the bug triage team with a chart:

Over the past 60 days, the bug triage team has taken an unwieldy hairy mess of tickets and addressed every single one of them.

Yes that’s right; as it stands, there are zero unreviewed tickets in the jQuery issue tracker. The last one to be closed was a rather malodorous bug.

The jQuery Bug Triage team are a group of jQuery core and community members who actively assist in narrowing down and patching bugs submitted on the jQuery bug tracker. Between them this team have a number of years worth of experience in debugging and fixing both JavaScript and jQuery issues. When you submit a bug, feature request or enhancement request to the project, they’re the team that looks at your tickets.

The team members are:

  • Dave Methvin is co-founder of PC Pitstop, jQuery user since 2005, and on the jQuery core team.
  • Addy Osmani is a London-based User-interface developer at Aol as well as a regular jQuery blogger.
  • Colin Snover is an independent software designer and developer based out of Minneapolis.
  • Rick Waldron is Head of Research and Development at Bocoup in Boston, MA
  • Alex Sexton is a Labs Engineer at Bazaarvoice in Austin TX, and a co-host of the yayQuery podcast.
  • Adam J Sontag is a NYC-based developer for Bocoup, and a co-host of the yayQuery podcast.
  • Mike Taylor works for Opera Software and sometimes gets hit by cars on his bike.
  • Dan Heberden is a web consultant based in Portland, Oregon and is on the jQuery UI team
  • Anton Matzneller is a computer science student and developer located in Vienna, Austria.

We all owe these guys a good amount of thanks. They’ve done a tremendous amount of work to benefit jQuery.

<== jQuery heroes

Now, some other news from the development front…

New (and undocumented) Features

Introduced in jQuery 1.4.3 was a counter called readyWait. This provides a way for control flow to get to a point where registered ready() handlers are invoked.

Event Map Support Extended
.live(), .die(), .delegate() and .undelegate() now support maps of events as a parameter in the same manner that bind and unbind currently do.

Overrides available for .getData(), .setData() and .changeData()
As mentioned in the jQuery 1.4.3 release notes we previously provided two events, setData and getData (broadcast whenever data is set or retrieved through the .data() method). In the latest versions of jQuery you are actually able to override these events in order to provide alternative behavior for those features. For example, you can return a different value or prevent a particular value being set.


We determined that a regression was introduced in 1.4.3 which limited the use of attr() to nodeType 1 DOM element nodes. Although this was fixed in 1.4.4, attr(name) and attr(name, value) still fail in specific circumstances. We are targeting a fix for this to land in jQuery 1.4.5.

jQuery UI Bug Tracker Updated

The jQuery UI Bug tracker recently received the same enhancements as jQuery Core from Mr. Colin Snover and you can now find the same great voting and tracking options for submitting bugs, features and enhancement requests as you can on the jQuery Core tracker. This will make it significantly more easy for you to find out when we’ve taken a look at your ticket so you can follow-up in case there are any additional questions or updates regarding fixes.

Tips For jQuery Bug Patching

jQuery has quite an active development community and from time to time our community members wish to patch bugs or issues they’ve discovered for submission to the project for review.

If this sounds like something you would like to get involved in, we’ve put together a commented build file (courtesy of Rick Waldron) that will help you get setup for patching bugs using a LAMP or MAMP stack. You can download this build file via a gist. If you have questions on how to get setup, please feel free to leave a comment on the gist above or ask us about it in the #jquery IRC channel.

(Thx to Addy Osmani, who drafted much of this post for me :)

jQuery 1.4.4 Release Candidate 2 Released

Posted on by

We’re happy to announce that jQuery 1.4.4 Release Candidate 2 is now available! This is the second release candidate of jQuery 1.4.4 – a follow-up maintenance release to jQuery 1.4.3. The code is stable (passing all tests in all browsers we support), feature-complete (we’re no longer accepting new features for the release), and needs to be tested in live applications.

Grab the code:

How can I help?

To start, try dropping the above version of jQuery 1.4.4rc2 into a live application that you’re running. If you hit an exception or some weirdness occurs immediately login to the bug tracker and file a bug. Be sure to mention that you hit the bug in jQuery 1.4.4rc2!

We’ll be closely monitoring the bug reports that come in and will work hard to fix any inconsistencies between jQuery 1.4.3 and jQuery 1.4.4.

What’s Been Updated?

There are a few areas in jQuery that have seen changes since 1.4.3 was released:

  • (New) Added a new animation method, .fadeToggle()
  • (Enh) Calling .data() with no arguments now includes data from HTML5 data- attributes (#7222)
  • (Enh) Moved jQuery.props from support.js to attributes.js (#6897)
  • (Enh) .width() and .height() now report the width and height of hidden elements (#7225)
  • (Bug) stopImmediatePropagation was not being honoured in live/delegate event handlers (#7217)
  • (Bug) Fixed an issue where host and protocol were not compared case-insensitively when determining whether an AJAX request was local or remote (#6908)
  • (Bug) Fixed an issue where the “clone” variable was not being declared correctly (#7226)
  • (Bug) Fixed a bug where we only change the ID on nodes that don’t already have an ID for rooted qSA (#7212)
  • (Bug) Changing an HTML5 data attribute after calling .data(‘foo’) no longer causes .data(‘foo’) to also change (#7223)
  • (Bug) Fixed a bug where Opera didn’t give height/width of display: none elements with getComputedStyle but did with currentStyle – fall back to that if it exists added.
  • (Bug) Fixed a bug to ensure accessing computed CSS for elements returns ‘auto’ instead of ” consistently (#7337)

It also fixes a number of regressions in 1.4.3. One that caused:

  • (Bug) JSONP calls to fail when cleaning up after a callback (#7196)
  • (Bug) .removeData() to fail (#7209)
  • (Bug) “ready” events to fire twice when added using .bind(“ready”, foo) (#7247)
  • (Bug)  .css(‘width’) and .css(‘height’) to return 0 or negative values when trying to get the style of a hidden or disconnected element (#7225)
  • (Bug) the attribute not equals selector ([foo!=bar]) to not work in Firefox (#7243)
  • (Bug) find() to fail when selecting from forms containing inputs named “id” (#7212)
  • (Bug) .children(selector) to fail on XML documents (#7219)
  • (Bug) child (>), next sibling (+), and previous sibling (~) selectors to fail when combined with non-CSS pseudo-selectors like :last (#7220)
  • (Bug) an error “handler is null” to be raised when passing null as the event handler (#7229)
  • (Bug) it to be impossible to include a content-body with DELETE requests (#7285)
  • (Bug) it to be impossible to include data with HEAD requests (#7285)
  • (Bug) an issue where IE was firing click events on disabled elements when using live/delegate (#6911)
  • (Bug) .show() to fail if .hide() was first called on an already-hidden element (#7331)
  • (Bug) .show() to fail if an element was hidden in a stylesheet, then had .css(‘display’) manually set prior to calling .show() (#7315)
  • (Bug) Sizzle.contains to throw an error on browsers that have no support for compareDocumentPosition or documentElement.contains (#7236)

Full details concerning the release are forthcoming – for now we just need your help in catch regressions.

With your input we should be able to produce a solid release. Right now we’re looking to get the final 1.4.4 release out in about a week. Thanks for your help in reviewing jQuery 1.4.4rc2!

We would also like to remind you that the sixth maintenance release for jQuery UI 1.8 is also now out. For more information on this release, feel free to head over to the jQuery UI blog for more information.

jQuery Community Updates 10/26

Posted on by

Updates From jQuery Core

I’ve got some good news today about the next version of jQuery: jQuery 1.4.4. On the heels of the 1.4.3 release, which included many fixes (and of course the introduction of jQuery Mobile), we felt it would be of most benefit to the community if we were to make a maintenance release soon after, aimed to further improve the stability of the jQuery core.

For 1.4.4, we’ve identified those bugs that were most critical for us to fix and thanks to John Resig and the bug triage team, we’ve already fixed the majority of these issues. We currently intend on releasing 1.4.4 in early November, assuming no further major bugs are targeted for this release.

Today, we would like to ask the community to assist us in ensuring this new release is as stable as possible through stress-testing it. While we already run a comprehensive suite of automated unit tests on jQuery, adding real-world user testing into our project flow allows us the opportunity to fix critical bugs sooner and will assist in 1.4.4 being a significant improvement over the last release.

If you would like to test 1.4.4, you can download an up-to-the-minute version of it (dubbed jQuery Git) here:


Please bear in mind that this version is not yet ready for production systems and is only made available for evaluation and testing. It is also now available on jsFiddle.net under the entry ‘jQuery 0 Git’.

We appreciate the community’s assistance in helping us make this release as stable as possible and welcome any feedback you may have on it. If you notice a bug in this release and would like to report it, please see the guidelines on bug submission.

Updates From the jQuery UI Team

The developers from the jQuery UI team stayed in Boston for three days after the conference and were able to fix quite a few bugs and do some face-to-face planning on the future of jQuery UI. jQuery UI 1.8.6 is nearing a release date very soon, so keep an eye on the jQuery UI blog for it.

Additionally, the jQuery UI team is working with Colin Snover to migrate jQuery UI’s ticket system over to a new system like jQuery Core just received. We are really excited about having a more stable and collaborative ticket tracking system and would love more contributions from the community helping in ticket triage. If you are interested in contributing, please talk to a jQuery Developer Relations team member.

The Official jQuery Podcast with Ralph Whitbeck and Rey Bango released their 37th episode last week. Their guest this week was Ben Nadel and they discussed jQuery in the ColdFusion community as well as talk about the jQuery Conference that took place in Boston last weekend. This week they’ll be interviewing John Resig about jQuery 1.4.3 and jQuery Mobile. If you have any questions you would like answered please send your question via the contact form.

Don’t forget about our forums. We have a vibrant community asking and answering questions. We would love more people contributing by helping others out in answering questions. It’s a great way to get involved in the project; being able to give your knowledge back to others is very rewarding.

jQuery 1.4.3 Released

Posted on by

jQuery 1.4.3 is now out! This is the third minor release on top of jQuery 1.4, fixing some bugs and landing some nice improvements.

I would like to thank the following community members that provided patches and input for this release: Anton M., Justin Meyer, Colin Snover, Ryan Tenney, Louis-Rémi Babé, David Petersen, Rick Waldron, Dave Reed, John-David Dalton, temp01, Heungsub Lee, J. Ryan Stinnett, Robert Katic, Juriy Zaytsev, James Burke, Jeffery To, Carl Fürstenberg, Jacob Wright, Jeff Robinson, Christian C. Salvadó, Andrée Hasson, Jason Webster, Dave Furfero, Adam Sontag, Travis Hardiman, DBJDBJ, and Ben Alman.

Along with the following jQuery team members: Scott González, Brandon Aaron, Yehuda Katz, Dave Methvin, Karl Swedberg, Paul Irish, Ralph Whitbeck, Jörn Zaefferer, Richard Worth, Doug Neiner, and Mike Alsup.


As usual, we provide two copies of jQuery, one minified (we now use the Google Closure Compiler as the default minifier) and one uncompressed (for debugging or reading).

You can feel free to include the above URLs directly into your site and you will get the full performance benefits of a quickly-loading jQuery.

Additionally you can also load the URLs directly from Google’s CDN:

General Improvements

We’ve made a number of improvements to the internals of jQuery and to the guidelines that we use for development.


To start jQuery is now passing Douglas Crockford’s JSLint tool. We’ve integrated his tool into our workflow (checking out jQuery from Github and running ‘make lint’ will show the results) – giving us the ability to keep on top of possible regressions.

We’ve made a few minor changes to JSLint to suit our particular development style and have documented the results in the jQuery Core Style Guidelines.


We’ve also removed a number of the inter-dependencies that exist in the jQuery source (inbetween modules). Doing this allows for a greater amount of flexibility when using a copy of jQuery from source. For example you could now use a script loader, such as LABjs or RequireJS to dynamically load individual jQuery modules (e.g. core, support, data, and events).

Additionally this change has made it so that you no longer need to build a copy of jQuery in order to run the jQuery test suite. This has dramatically improved our development workflow – allowing us to quickly make changes to jQuery and test the results without a (comparatively) slow build step.

New Features

All new features and changes can be found in the jQuery API documentation for 1.4.3.

CSS Module Rewrite

Nearly the entire CSS module has been rewritten focusing entirely on extensibility. You can now write custom CSS plugins that extend the functionality provided by .css() and .animate().

For example here is a plugin written by Louis-Rémi Babé that takes advantage of the new functionality: jQuery Rotate.

The plugin provides a cross-browser means of setting and animating the rotation of DOM elements just by using the traditional jQuery methods, like so:

$('#myDiv').css('rotate', 90);
$('#myDiv').animate({rotate: 180});

During the rewrite we broke down the functionality contained within jQuery into two very clear paths: Getting and setting an element’s .style property (done through jQuery.style) and getting the current computed style information of an element (done through .css() and jQuery.css – note that jQuery.curCSS is no longer used and is deprecated as a result). The functionality provided by .css() uses both the jQuery.style and jQuery.css methods.

Making this change has allowed for some speed-ups in computed style retreival, as well – yielding results that are up to 20% faster.

jQuery 1.4.3 .css() Getting a Value

The raw data for all the performance tests can be found in the following Google Doc Spreadsheet. All tests can be found in the jQuery source repository.


The data module has seen a number of improvements greatly increasing its utility.

HTML 5 data- Atributes

To start the primary functionality provided by the jQuery Metadata plugin has been moved into core. HTML 5 data- attributes will be automatically pulled in to jQuery’s data object.

For example, given the following HTML:

<div data-role="page" data-hidden="true" data-options='{"name":"John"}'></div>

All of the following jQuery code will work.

$("div").data("role") === "page";
$("div").data("hidden") === true;
$("div").data("options").name === "John";

Note that strings are left intact while JavaScript values are converted to their associated value (this includes booleans, numbers, objects, arrays, and null).

The data- attributes are pulled in the first time the data property is accessed and then are no longer accessed or mutated (all data values are then stored internally in jQuery).

JavaScript Objects

A number of changes were made to when .data() is used on JavaScript objects (or, more accurately, anything that isn’t a DOM node). To start whenever you set data on a JavaScript object the data is set directly on the object – instead of going into the internal data object store. Additionally events that are attached to objects are put in a new ‘__events__’ property that is actually a function. This was done to allow events to be attached directly to an object, be garbage collected when the object is collected, and not be serialized by a JSON serializer. These changes should make jQuery’s data and event systems much more useful on JavaScript objects.


jQuery has already had setData and getData events (which are broadcast whenever data is set or gotten through the .data() method) – overriding these methods makes it possible to override the default behavior for those features (namely you can return a different value or prevent a value from being set. Note that in jQuery 1.4.3 these events no longer bubble (allowing them to bubble proved to be too costly in most applications).

In 1.4.3 we’ve introduced a new event called changeData. This event is fired after any individual data properties are changed when using .data(). For example:

var user = new User();
$(user).bind("changeData", function( event, name, value ) {
  $("#user").find("#" + name).val( value );

The changeData event is used extensively by the new jQuery Data Linking plugin. It makes it possible for the data API to synchronize setting of JavaScript object properties with form fields.


There was one minor API change to .data() in 1.4.3: Calling .data(Object) no longer completely replaces the data object instead it extends the existing object, leaving the unspecified values in place. We found this to be the expected result based upon a number of confused bug reports.


The performance of nearly all the major traversal methods has been drastically improved. .closest(), .filter() (and as a result, .is()), and .find() have all been greatly improved.

These improvements were largely the result of making greater use of the browsers querySelectorAll and matchesSelector methods (should they exist). The jQuery project petitioned the browsers to add the new matchesSelector method (writing up a test suite, talking with vendors, and filing bugs) and the whole community gets to reap the excellent performance benefits now.

jQuery 1.4.3 .closest() Performance

jQuery 1.4.3 .filter() on a Single Element

jQuery 1.4.3 .find() on an element

The raw data for all the performance tests can be found in the following Google Doc Spreadsheet. All tests can be found in the jQuery source repository.

The above performance results specifically look at three very common cases in jQuery code: Using .closest() on a single DOM node, using .filter() (or .is()) on a single DOM node, and using .find() rooted on a DOM element (e.g. $(“#test”).find(“something”)).

Note that the the browsers shown are those that actually support querySelectorAll or matchesSelector – existing browsers that don’t support those methods continue to have the same performance characteristics.


A few new Ajax features have landed which should help plugin authors and those building progressively-enhanceable applications.

A new jQuery.readyWait property has been introduced which, when added to, delays the execution of the ready event. This should be used by plugins that wish to delay the ready event from occurring until a specified time. For example RequireJS has already implemented the use of this property allowing you to load dependencies that should be handled before the ready event fires. Whenever an item finishes loading you should end up calling jQuery.ready(true) (and if all dependencies are finished loading – and the DOM is ready – then the ready event will fire).

We’ve also added a new support property: jQuery.support.ajax. Simply this returns true in browsers that are capable of handling an ‘Ajax’ (XMLHttpRequest) request.


.bind(“click”, false) and .unbind(“click”, false)

A convenient shortcut for binding a function that does nothing but return false (preventing the default action and stopping the event bubbling).

.click(data, fn)

All built-in event methods (such as .click()) now accept data as an initial argument (much like the bind method does).


A new property of the event object that contains the event namespace that was passed in to .trigger().


.show(speed, easing, callback), etc.

All animate methods now support easing. Much like how .animate() supports an easing argument (to be utilized by an easing plugin)


A new property that exposes the rate at which all effects fire (in milliseconds – defaults to 13). Making this number smaller will make animations smoother in some browsers (such as Chrome) at the expense of CPU.



Determine the internal JavaScript [[Class]] of an object. A number of different aspects are utilized to determine the exact return value for an object. The logic can be determined as follows:

  • If the object is undefined or null then “undefined” or “null” is returned accordingly.
  • If the object has an internal [[Class]] equivalent to one of the browser’s built-in objects we return the associated name. (More details about this technique.)
    • jQuery.type(true) === “boolean”
    • jQuery.type(3) === “number”
    • jQuery.type(“test”) === “string”
    • jQuery.type(function(){}) === “function”
    • jQuery.type([]) === “array”
    • jQuery.type(new Date()) === “date”
    • jQuery.type(/test/) === “regexp”
  • Everything else will return “object” as its type.


A simple method for determining if an object is likely to be a window.

jQuery.isWindow(window); // true

Additionally we now use he native Array.isArray method for jQuery’s isArray (if available) and we utilize the native String trim method provided by the browser (again, if available). A number of performance improvements were made to jQuery.trim, detailed in the following thread.


jQuery 1.4.3: Passing 3621 Tests in All Browsers

jQuery 1.4.3 is passing 3621 tests on all supported browsers. We’re 100% passing on Firefox 4 and nearly passing in IE 9 (we discovered two bugs, filed them, and one of them has already been fixed).

jQuery Community Updates 10/12

Posted on by

This is a big week for jQuery with our second release candidate for jQuery 1.4.3 already out and available for testing. We would like to thank everyone that’s been submitting their feedback and bug reports on it as they have been very helpful in making this release as stable as possible. Remember that if you’ve got a bug you would like to report, you can easily submit one through our bug tracker.

Our New Bug Tracker

Regarding the bug tracker, I would like to hand you over to Colin Snover who has an announcement to make about our bug tracking system:

Today we’ve introduced a new bug tracking system for jQuery core. In addition to being a lot faster and easier to use, the new Trac has a bunch of great new features that we hope you enjoy. We’ve tried hard to make sure that both end-users and developers are given a much better experience than what they were used to from the old service.

The most important change is the addition of voting, which will help the team prioritize which bugs and new features are of greatest concern to the members of the jQuery community. Up until now, there was no way to get such a concrete metric of which issues people felt were most important, so we’re very excited about this feature and hope you will use it to help us get an idea of what you want to see most in the library.

We added a login-free bug reporting mode, which will allow anyone to report a bug without needing to go through a registration process first. We also significantly improved the reporting process, so that when submitting a ticket, only a summary, description, version number, and issue type need to be provided.

Another great new feature of the new Trac is a more customisable notifications system, which allows anyone to pick and choose exactly when they receive emails about ticket changes. This feature also introduces the ability to “watch” tickets, so you can be kept up-to-date about tickets that you care about without needing to visit the bug tracker on a regular basis.

For jQuery developers, the new bug tracker offers a glut of improvements. Most visibly, we are now able to set up cross-references, so we know which issues block and are blocked by other tickets. We’ve also integrated support for GitHub, so changes to the jQuery GitHub repository are reflected automatically in Trac on the timeline and in the ticket system. Finally, changes have been made to the ticket workflow such that duplicate tickets can be addressed much more quickly, and tickets that are abandoned by their submitters are automatically closed to keep the number of invalid reports low.

We’re really excited about everything that has been added to the new bug tracker and we hope you will take a look today!

We encourage users to login when submitting a new bug report as this will allow you to see and use some of the new improved features such as the voting widget and notifications regarding follow-ups on your bug report. Let us know what you think about it!.

Community Support

One of the great things about our community is that we’re always ready and willing to give a hand to those just getting started out with jQuery.

In this spirit, we would like to invite members with experience using it to get involved with the jQuery Forums – this is a great place for assisting beginners with questions they may have about jQuery or just helping out members that are having some trouble getting their code to correctly function. To get started all you need to do is create a new forum account or alternatively sign in using your Google, Yahoo or Facebook account.

A Call For New jQuery And jQuery UI Tutorials

The jQuery & jQuery UI documentation sites are an excellent source of information on how to get started with jQuery, but we also like to provide the community with links to tutorials which might go into greater depth about particular topics.

If you enjoy writing about jQuery or jQuery UI, we would like to invite you to write an up-to-date tutorial on a particular aspect, function or component that we can then share with the rest of the community. The best tutorials may get added to our officially recommended tutorials page here.

Please feel free to get in touch if you would like to submit a tutorial for review.

jQuery Conferences

The Official jQuery Conference in Boston is going to be held on the 16th of this month and all jQuery team members attending are looking forward to seeing you there if you’re going. If you can’t make it however, don’t worry! No matter where you’re based, you can still register for the jQuery Online Summit running between November 16th-17th featuring speakers such as John Resig, Paul Irish, Rey Bango and many more.

Thanks and stay tuned for more updates from the jQuery team!

jQuery 1.4.3 Release Candidate 2 Released

Posted on by

jQuery 1.4.3 Release Candidate 2 is released! This is the second release candidate of jQuery 1.4.3. The code is stable (passing all tests in all browsers we support), feature-complete (we’re no longer accepting new features for the release), and needs to be tested in live applications.

Grab the code:

NOTE: If you’re using jQuery 1.4.3rc2 and you run into an error please make sure that you’re using the regular version of the code, it’ll make it easier to spot where the error is occurring.

How can I help?

To start, try dropping the above un-minified version of jQuery 1.4.3rc2 into a live application that you’re running. If you hit an exception or some weirdness occurs immediately login to the bug tracker and file a bug. Be sure to mention that you hit the bug in jQuery 1.4.3rc2!

We’ll be closely monitoring the bug reports that come in and will work hard to fix any inconsistencies between jQuery 1.4.2 and jQuery 1.4.3.

More details regarding the 1.4.3 release can be found in the previous post on jQuery 1.4.3rc1.

jQuery 1.4.3 Release Candidate 1 Released

Posted on by

jQuery 1.4.3 Release Candidate 1 is released! This is the first release candidate of jQuery 1.4.3. The code is stable (passing all tests in all browsers we support), feature-complete (we’re no longer accepting new features for the release), and needs to be tested in live applications.

Grab the code:

NOTE: If you’re using jQuery 1.4.3rc1 and you run into an error please make sure that you’re using the regular version of the code, it’ll make it easier to spot where the error is occurring.

How can I help?

To start, try dropping the above un-minified version of jQuery 1.4.3rc1 into a live application that you’re running. If you hit an exception or some weirdness occurs immediately login to the bug tracker and file a bug. Be sure to mention that you hit the bug in jQuery 1.4.3rc1!

We’ll be closely monitoring the bug reports that come in and will work hard to fix any inconsistencies between jQuery 1.4.2 and jQuery 1.4.3.

What to Watch For

There are a few areas in jQuery that have seen extensive changes since 1.4.2 was released:

  • .css() and related css-handling methods were all overhauled.
  • Logic for determining element visibility and toggling of display in animation code.
  • Much of the traversing logic has been improved and changed (is, filter, closest, find).

Full details concerning the release are forthcoming – for now we just need your help in catch regressions.

With your input we should be able to produce a solid release. Right now we’re looking to get the final 1.4.3 release out in time for the jQuery Conference in Boston this next weekend. Thanks for your help in reviewing jQuery 1.4.3rc1!

New Official jQuery Plugins Provide Templating, Data Linking and Globalization

Posted on by

As the jQuery project has grown, so have the needs of the developer community. As a project, we’re focused on building the best features possible and providing them in a reliable and open manner. Like most open-source projects, the software we’re able to offer is in no small part due to the generosity of many volunteers who donate their time and coding skills to make jQuery and jQuery UI some of the most widely used JavaScript libraries available.

In March, we announced at MIX 2010 that Microsoft had committed to supporting the jQuery Project via code contributions and resources. Shortly thereafter, Microsoft made available for public review their first jQuery plugin which provided client-side templating capabilities to the jQuery community. This was soon followed by their second plugin, jQuery Data Link, which offered data synchronization capabilities and, most recently, the jQuery Globalization plugin which offers globalization information to JavaScript applications for over 350 cultures ranging from Scottish Gaelic, Frisian, Hungarian, Japanese, to Canadian English.

During the seven months of development, the jQuery and Microsoft teams worked closely to ensure that the code conformed to the best practices specified by the jQuery project and filled specific needs of the jQuery community. We also ensured that any code contributed would be available to the jQuery community under the same non-restrictive licensing terms as the jQuery JavaScript Library.

Official jQuery Plugins

Today, we’re very happy to announce that the following Microsoft-contributed plugins – the jQuery Templates plugin, the jQuery Data Link plugin, and the jQuery Globalization plugin – have been accepted as officially supported plugins of the jQuery project. As supported plugins, the jQuery community can feel confident that the plugins will continue to be enhanced and compatible with future versions of the jQuery and jQuery UI libraries.

The jQuery Templates and jQuery Datalink plugin will be managed by the jQuery Core team while the jQuery Globalization plugin will become part of the jQuery UI project, allowing for extended globalization functionality for our rich UI library. In addition, the functionality found in the jQuery Templates plugin will be directly integrated into the jQuery Core library starting with version 1.5.

Documentation and Tutorials

To help you immediately use these plugins, we’re providing API documentation and tutorials that will help you ramp up on these new technologies.

API Documentation


Available for Download

Source code for the new plugins can be found on Github and we encourage the community to evaluate & enhance the functionality. The new plugins are available immediate download and the code can be found here:

jQuery Templateshttp://github.com/jquery/jquery-tmpl
jQuery Datalinkhttp://github.com/jquery/jquery-datalink
jQuery Globalizationhttp://github.com/jquery/jquery-global

New Contribution Vehicle

We’d like to thank Microsoft for their commitment to helping the jQuery Project and providing new and exciting functionality for the jQuery libraries. This has been a rewarding experience for both teams, laying the foundation for future collaboration and creating a new path for meeting the needs of the jQuery community.

Please be sure to read Microsoft’s joint announcement outlining the history of the effort and the importance of these contributions to Microsoft and the jQuery community:

jQuery Templates, Data Link, and Globalization Accepted as Official jQuery Plugins – Scott Guthrie, Corporate Vice President in the Microsoft Developer Division

jQuery Templates is now an Official jQuery Plugin – Boris Moore, Microsoft

jQuery Templating in the wild – James Senior, Microsoft

Web Camps TV #5 – Microsoft Commits Code to jQuery!
– Channel 9 Video