New Releases, Videos & A Sneak Peek At The jQuery UI Grid

Posted on by

In today’s post we’ll be presenting updates on both jQuery Core and UI as well as highlighting any upcoming training events being held and articles or videos which we think might be useful to read. We would appreciate your comments and feedback on them!

Contents

 

jQuery 1.5 Was Released

This week, the core team released jQuery 1.5 to celebrate the fifth birthday of the library. This included many performance improvements and bug fixes as well as a major re-write of the Ajax module which now comes with deferred callback management. Core also introduced a new feature called jQuery.sub which allows for new copies of jQuery to be created where properties and methods can be safely modified without affecting the global jQuery object.

If you haven’t had a chance to read or play around with these new features as yet, community member Eric Hynds wrote an in-depth tutorial on using Deferreds which you may be interested in. I also recorded a quick screencast explaining how to use jQuery.sub.

jQuery 1.5 has already begun to be used in the wild and you may also be interested in taking a look at jQuery templating author Boris Moore’s new script loader which also makes use of deferreds.

As always, we appreciate any and all community feedback on the 1.5 release and if you discover bugs or issues which you would like to report, you can do so by following our bug submission guidelines. We’ve already made a number of fixes to 1.5 (which can be tested in jQuery-Git) and we also welcome any feedback on that version as well.

Remember that up-to-date information on all our future releases (including jQuery 1.5.1) can be found on our roadmap.

 

Unleashing the Grid – A New jQuery UI Grid

The jQuery UI Team have announced an exciting new project called the jQuery UI Grid, where they’ll be building a feature rich, fast grid widget for enhancing table data with linking, sorting, paging and inline editing amongst other features.

There have been quite a few attempts outside of the project to create such widgets before, however they’ve often suffered from poor support, documentation or a lack of extensibility – the new UI grid project aims to solve these issues by providing a project-supported component that will be both modular and continually updated.

Speaking to Richard D. Worth, here’s a progress update on where the team are with the Grid at the moment:

We are nearing completion of development on Stage 1 of the project, which encompasses the creation of a generic data model, data type parsing, and markup. This stage will culminate in a “zero feature grid,” an enhanced HTML table that supports the jQuery UI CSS Framework and serves as a base for other grid features.

Read Richard’s full blog post on the new Grid.

 

jQuery Conference Videos Are Now Available Online

If you weren’t able to attend the jQuery Conference in Boston last year (with speakers such as John Resig and Karl Swedberg in attendance) we’ve got some great news – almost all of the talks are now available to watch online (either on your desktop or mobile device) via our conference site. You can also pick-up the slides mentioned in the videos by clicking on any individual speaker’s talk.

 

Upcoming jQuery Training Events

Group training can be an excellent way to improve your jQuery skills and Ben Alman over at Bocoup (a jQuery sponsor) would like to make a special announcement about upcoming events they’ll be holding in March and July.

Bocoup currently has two 3-Day Comprehensive jQuery Training sessions scheduled. As always, sessions will be held at The Bocoup Loft in Boston, and 10% of profits will go directly to the jQuery Foundation. Be sure to sign up now, since class sizes are limited to twelve people. Read more about our curriculum and trainers here:

March 2nd – 4th, 2011 and July 13th – 15th, 2011

jQuery Team member Karl Swedberg will also be holding a hands-on training event between March 1st-3rd in Holland, Michigan.

Karl will painlessly walk you through jQuery’s principles and show you how to make use of the library in your everyday coding. Karl will also be giving away free copies of his Learning jQuery book to all attendees.

For more information or to register, check out the IdeaFoundry site.

 

A New Episode Of YayQuery

For fans of the YayQuery podcast, Paul Irish (jQuery core team), Adam Sontag (jQuery UI team) and community members Alex Sexton and Rebecca Murphey are back with a new episode of their video podcast. In their latest episode, they discuss the new Deferreds features with one of the main developers behind the Ajax re-write (Julian Aubourg) and also look at other new developments in the world of jQuery and JavaScript.

Watch or listen to the podcast at YayQuery.com.

And that’s it!. If you have any interesting jQuery articles or posts which you think would be beneficial for the community to read, please feel free to mention them in the comments. We’ll be back with another Community Update in a few weeks with more news on the next version of jQuery.

Until then, good luck with all your projects!.

jQuery 1.5 Released

Posted on by

Right on schedule jQuery 1.5 is ready for consumption!

This release has been a long time coming and has been a real team effort. Please take this opportunity to thank members of the jQuery Team and the jQuery bug triage team for their help in getting this release out the door.

Downloading

As usual, we provide two copies of jQuery, one minified 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 Microsoft and Google’s CDNs:

Microsoft CDN: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.min.js

Google CDN: https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js

About The Release

This release saw 83 fixed bugs and a total of 460 closed tickets.

The test suite (which now has 4437 tests) passes in all the browsers that jQuery supports – and more. We verified the suite passing all of the following browsers:

  • Safari 5.0.3 / 4.0.5 / 3.2.3 / 3.1.2
  • Opera 11.01 / 11 / 10.63 / 10.54 / 10.10 / 9.64
  • IE 6 / 7 / 8
  • Firefox 4.0b9 / 3.6.13 / 3.5.11 / 3.0.19 / 2.0.0.20
  • Chrome 8.0.552.215 / 8.0.552.237 / 9.0.597.67 Beta / 10.0.642.2 Dev

Additionally all of the API documentation for the release can be found on the API site: jQuery 1.5 API Documentation.

A full schedule of our upcoming releases can be found on our roadmap. Right now we’re planning on doing major jQuery releases more frequently (likely a couple times a year, rather than once per year).

So, without further ado, what’s changed in jQuery 1.5?

Ajax Rewrite

Easily the largest change in this release is the complete rewrite of the Ajax module in jQuery. This rewrite helps to fix a lot of gaps that existed in the old Ajax system along with providing a higher level of consistency across the API.

Perhaps the largest change is that a call to jQuery.ajax (or jQuery.get, jQuery.post, etc.) now returns a jqXHR object that provides consistency to the XMLHttpRequest object across platforms (and allows you to perform previously-impossible tasks like aborting JSONP requests).

More details concerning the new jqXHR object can be found in the jQuery.ajax() documentation.

In addition to a more consistent API the Ajax system is now much more extensible – allowing you to attach all sort of data handlers, filters, and transports. These changes should open up a whole realm of new Ajax plugins that can take advantage of this extensibility. More information can be found in the Extending Ajax documentation. The team is actively soliciting feedback on the Ajax extensibility API and if you have any feedback please feel free to direct it to the Developing jQuery Forum.

Deferred Objects

Along with the rewrite of the Ajax module a new feature was introduced which was also made publicly available: Deferred Objects. This API allows you to work with return values that may not be immediately present (such as the return result from an asynchronous Ajax request). Additionally it gives you the ability to attach multiple event handlers (something that wasn’t previously possible in the Ajax API).

For example, the following is now possible with jQuery’s internal Ajax API:

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });

Additionally you can make your own deferred objects using the exposed jQuery.Deferred. More information about this API can be found in the Deferred Object documentation.

Eric Hynds has written up a good tutorial on Using Deferreds in jQuery 1.5.

jQuery.sub()

jQuery now exposes a new way in which you can create and modify a clone of jQuery – all while still taking advantage of the full jQuery API. For example, you could use it to override native jQuery methods without actually affecting the methods that other users would interact with – or even create encapsulated APIs for your plugins that avoid namespace collision.

Here is a sample of adding a method to a jQuery sub so that it isn’t exposed externally:

  (function(){
    var sub$ = jQuery.sub();

    sub$.fn.myCustomMethod = function(){
      return 'just for me';
    };

    sub$(document).ready(function() {
      sub$('body').myCustomMethod() // 'just for me'
    });
  })();

  typeof jQuery('body').myCustomMethod // undefined

More information about jQuery.sub() can be found in the API documentation.

Note that if you’re looking to use this for plugin development, you should first strongly consider using something like the jQuery UI widget factory which manages both state and plugin sub-methods. Some examples of using the jQuery UI widget factory to build a plugin.

Adjacent Traversal Performance

In this release we’ve also been able to improve the performance of some commonly-used traversal methods: .children(), .prev(), and .next(). The speed-ups that we’re seeing are quite substantial (potentially many many times faster, depending upon the browser).

.children() Performance in jQuery 1.5

.prev() Performance in jQuery 1.5

.next() Performance in jQuery 1.5

Performance Test Case and Raw Numbers

Build System

Finally, we’ve made some changes to jQuery’s internal build system. We’ve worked to standardize all of our build process upon the excellent server-side JavaScript environment: NodeJS. We especially appreciate this as we’re able to reduce our dependency upon legacy Java/Rhino systems and focus more squarely on up-and-coming JavaScript environments.

Additionally with this switch we’ve moved to using UglifyJS from the Google Closure Compiler. We’ve seen some solid file size improvements while using it so we’re quite pleased with the switch.

Thanks!

As always we want to thank everyone that helped with this release – without your contributions this release would not have been possible. If you have any questions or spot any bugs please submit your issues to the jQuery bug tracker.

API Documentation Changes

Posted on by

examples of comments on api.jquery.com When we added comments to the API documentation last January, the idea was to provide a place for members of the community to augment the documentation with their own tips or real-world examples. While this system worked well when it was first introduced, it has become increasingly difficult to manage the enormous amount of spam that it has attracted. We also found that many people were trying to use it as a support system, which it was not designed to do. Because of this, we’re planning to turn off comments on the API site later this week in favor of more directed feedback options:

  • If you need help debugging your code or understanding how something works, or if you’re interested in helping others, head to the jQuery Forum or visit #jquery on irc.freenode.net.
  • If you’ve found a bug or have an idea for an enhancement, please follow our bug reporting guidelines and submit your report directly to our bug tracker.
  • If you notice an error or omission in our documentation and want to help us improve it, we’ll provide a simple contact form for you to fill out.

Once comments are disabled, members of the jQuery API subteam will scour old comments for any information that we can, with the commenter’s permission, roll into the documentation proper.

Observations and Lessons Learned

Even though we’ll be turning off the comment system, having it on the site the past year was a valuable experience. Here are just a few of the observations and lessons we noted along the way:

  • When bug reports, feature requests, and calls for help were left in comments, instead of in the bug tracker and forums, they didn’t receive the attention they deserved.
  • When well-meaning people replied to requests for help in the wrong channel, they inadvertently contributed to the fragmentation of the community.
  • On the other hand, when people introduced and responded to topics in the appropriate channel, there was a much greater likelihood of successful resolution.
  • Instructions for writing appropriate comments were often overlooked, regardless of their size, location, or wording.
  • The value and accuracy of on-topic comments tends to wane over time as bug-fixes and enhancements are applied.
  • Knowing how and when to “prune” comments was a particularly tough challenge. For example, after we revised the wording in an entry to address a comment thread, we felt that deleting the thread was appropriate. Yet, we also regretted not being able to properly thank the people who helped out without contributing to comment noise.
  • If a plugin author plugs their project in the comments, is it spam? We didn’t have a good answer to this question, and many others like it, but that didn’t keep us from spending a lot of time stressing over the Right Way™ to handle these situations.

Thanks to the jQuery API Sub-team

Finally, I’d like to take this opportunity to thank those who have volunteered to commit their valuable time and resources to maintaining and improving the API documentation. The following people are members of the recently formed jQuery API sub-team:

  • Adam Sontag
  • Addy Osmani
  • Alex Sexton
  • Dan Heberden
  • Dave Methvin
  • Eddie Monge
  • Jonathan Chaffer
  • Karl Swedberg
  • Paul Irish
  • Richard Worth
  • Rick Waldron
  • Scott González
  • Sean Koole
  • Todd Parker

Additionally, thanks to all of those in the jQuery community who have contributed with their suggestions, critiques, and encouragement.

jQuery 1.5 RC 1 Released

Posted on by

We’re nearing the final release of jQuery 1.5 – and we’re pleased to announce the release of the first release candidate! Barring any major bugs this should be the code that we end up shipping for jQuery 1.5 (which will be happening on January 31st).

The final release notes and documentation will be coming with the final 1.5 release.

jQuery 1.5 Release Candidate 1

You can get the code from the jQuery CDN:

You can help us by dropping that code into your existing application and letting us know that if anything no longer works. Please file a bug and be sure to mention that you’re testing against jQuery 1.5 RC 1.

We want to encourage everyone from the community to try and get involved in contributing back to jQuery core. We’ve set up a full page of information dedicated towards becoming more involved with the team. The team is here and ready to help you help us!

jQuery 1.5 Beta 1 Released

Posted on by

Happy 5th Birthday to jQuery! jQuery was released on January 14th, 2006 today marks its 5th year of development!

To celebrate the occasion we’re releasing the first beta release of jQuery 1.5! We’re planning on having a final release candidate within 10 days and a final release by the end of the month.

We’d also like to announce three new additions to the jQuery core development team: Julian Aubourg, Colin Snover, and Anton Matzneller. All three of them have been major contributors towards the 1.5 release – providing significant code contributions, bug fixes, and triaging. Please take this opportunity to welcome them aboard!

Additionally we’d like to take take this opportunity to thank all the members of the jQuery community that have helped to get this beta release out – especially all the members of the bug triage team.

We want to encourage everyone from the community to try and get involved in contributing back to jQuery core. We’ve set up a full page of information dedicated towards becoming more involved with the team. The team is here and ready to help you help us!

So without further ado – jQuery 1.5 Beta 1!

jQuery 1.5 Beta 1

You can get the code from the jQuery CDN:

You can help us by dropping that code into your existing application and letting us know that if anything no longer works. Please file a bug and be sure to mention that you’re testing against jQuery 1.5 Beta 1.

jQuery 1.5 Beta 1 Change Log

This is a concise change log – full release notes will be coming with the final 1.5 release.

  • 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 here #7195
  • Subclassing in jQuery now supported #7901
  • 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
  • Deduplicated code in $.get and $.post. #7847
  • 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
  • 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
  • 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
  • Use a for loop rather than for/in loop when copying events so that code will work with an augmented Array.prototype. #7809, #7817
  • Fixed fadeIn not working properly with inline elements. #7397
  • Rewrote IE’s clone function to function properly in all known cases. #4386, #5566, #6997
  • Fixed IE breaking when dispatching a ‘submit’ event on plain JS objects. #6398
  • Fixed a regression in 1.4 that caused cache control to be set incorrectly for script transport. #7578
  • Improve performance of get() for negative indices. #5476
  • hasClass, removeClass didn’t work in IE if the attribute contained a carriage return (\r) character. #7673
  • Fix a regresion in 1.4.4 where calling $.fn.data without arguments breaks on non-DOM elements. #7524
  • Fixed memory leaks in IE caused by the custom abort function of $.ajax. #6242
  • Prevent live events from firing on disabled elements in IE. #6911
  • Fixed a regression in 1.4.3 that caused sending a Location object to $.ajax to no longer work. #7531
  • Fixed an issue where some traversal methods performed an unnecessary uniqueness check. #7964
  • We now support being able to specify callbacks to handle specific status codes#4964
  • Fixed an issue where ?? wasn’t supported as a context-insensitive placeholder for the callback name of a JSONP request. #4897
  • Data returned from dataFilter was not being passed to ajax complete() callbacks. We now use the jXHR’s promise interface to get the actual response. #4825
  • We now ensure that buildFragment clones elements properly in all browsers. #6655 and #3879
  • A memory leak caused when binding custom events in IE8 was fixed #7054
  • Lines in form data are now delimited by CRLF when the form is submitted (as recommended by the W3C). #6876
  • Ajax requests now abort on unload such that the event is only bound if the xhr transport is used. #5280
  • We now support =? being detected even if it has been escaped during data serialization. #5812
  • If the user uses the jsonpCallback setting we now automatically set the dataType to ‘jsonp’. #5803
  • The crossDomain option now forces ajax to consider a request as cross-domain, even when its not. This is useful when servers issue redirects to cross-domain urls. #5955
  • $.ajax(this) allowing retries without the recursion errors found in jQuery 1.4.3. #7461
  • Removed a patch for very early versions of Opera 9 that made it impossible to animate values smaller than -10000. #7193
  • ResponseText is now properly propagated for error callbacks. #7868
  • Scripts onload handler passes event as first parameter so statusText is now passed as second argument for aborts. #7865
  • With respect to xhr, setting contentType to false will now prevent the Content-Type header from being sent. #7465
  • When serializing text, we now encode all line breaks as CRLF pairs per the application/x-www-form-urlencoded specification. #6876
  • Fixed a bug with IE6 where certain event handlers were causing inter-page memory leaks. #7762
  • Tests for cross-domain detection now include checking for protocol, hostname and port. #7465
  • Fixed a problem where IDs containing a period would break find() without returning results. #7533
  • The regression with next/adjacent selectors no longer working without the ‘prev’ element has been corrected. #7452
  • Fixed the 1.4.3 regression which prevented the use of attr() on anything but DOM element nodes where the nodeType was 1 #7452, #7500,
  • A bug where including jQuery 1.3.2 resulted in a border on the right-hand side of the screen in IE8 has been fixed. #5575
  • We’ve fixed an issue where adding extra methods to Array.prototype and using jQuery.clone(true) to clone an element resulted in invalid event bindings. #6355
  • Fixed an issue where the nth-child does not handle whitespace correctly in Internet Explorer. #7558
  • We corrected a bug where mouseenter/leave behaved like mouseover/out when using live events #5821
  • Fixed a regression in 1.4.3 where the eq() selector was no longer working with previous and adjacent selectors #7906
  • Updated the documentation on event.currentTarget to address any confusion regarding jQuery.proxy. #7628
  • Fixed an issue where xhr.setRequestHeader(‘Accept’,…) appended the value rather than replacing it. #6230
  • An IE issue where ajax methods failed for content types ending in ‘+xml’ (eg. rss+xml) was fixed. #4958
  • The updates to ajax now allow any request to be aborted. #3442
  • A .slideUp() issue in FireFox 3.6.11 was fixed which previously hid the frameset border and legend but left any content uncovered by another element. #7308
  • We now support cross-browser XML parsing. #6693
  • Fixed a bug where when using dataType:’json’ in the .ajax() method, the data object was undefined in IE6 and 7. #6106
  • Corrected an issue where JSONP calls were not removing the script tag when the call completed. #7418
  • Updated the documentation to reflect the behaviour supported when using delay() with show() if the duration is not specified. #7543

Hotlinking to be disabled on January 31, 2011

Posted on by

Lately, we have noticed a significant increase in traffic from sites that hotlink directly to files on our various properties (jquery.com, jqueryui.com, dev.jquery.com, etc.) instead of downloading and hosting them locally or taking advantage of the CDNs that we and others (Google, Microsoft, etc.) provide for this purpose. This behavior has started to negatively affect the performance of our network and is preventing legitimate users from accessing our site at peak times.

In order to improve the performance and availability of our sites for all users, we have disabled hotlinking to images across our entire network. We will be disabling hotlinking to all other types of content (such as CSS and JavaScript) at the end of January. If your site is hotlinking to jQuery domains other than code.jquery.com, please be aware that you must update your site before this deadline or it will stop functioning normally.

For information on upgrading your site to take advantage of one of the available CDNs, or to download jQuery to host on your own server, please visit:

Downloading jQuery
jQuery UI 1.8.7 Release Notes

Thank you for your cooperation!

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.

Donations

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

jQuery.readyWait
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.

Regressions

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:

http://code.jquery.com/jquery-git.js

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.