jQuery 1.6 Beta 1 Released

Posted on by

We’re nearing the completion of jQuery 1.6! We want to get a beta out so that everyone can start testing the code in their applications, making sure that there are no major problems.

jQuery 1.6 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.6 Beta 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.6 Beta 1 Change Log

The current change log of the 1.6 release.

  • #6782 Optimizes regex for innerHTML to allow more html snippets to use faster method.
  • #7328 When getting data- attributes, after-cap any embedded dashes per the W3C HTML5 specs.
  • #4146 Fixing inconsistency with width/height on inputs.
  • #7345 Adds support for explicit/relative string values in .css().
  • #7783 Fixes $.proxy to work like (and use) Function.prototype.bind
  • #8753 Allows special properties to be explicitly defined on jQuery.Event objects.
  • #7587 Bypass regexp filter on $.parseJSON and use native thrown exceptions if window.JSON.parse is available.
  • #8150 Fixes an issue where if removing the width and height attributes in IE6/7, setting to “” actually sets to 0 instead of auto.
  • #6562 Fixes an issue where if you have a DOM node with the ID of ‘target’ and you try and set a target it fails.
  • #8744 Makes sure script transport abort method actually removes the script tag even if readyState exists.
  • #8712 Bubble custom events to the window when they are triggered.
  • #8635 Fixes an uncaught exception in Firefox and removes unnecessary “manual” garbage collection.
  • #8568 Fixes an issue where live event callbacks can get out of order in the event liveHandler function.
  • #8417 Disables the JSONP replacement for $.ajax() JSON POST.
  • #8099 Fixes an issue where SPAN elements become block level on show().
  • #8593 Fixes an issue where DOM 0 event handlers are called twice when a separate handler is attached via jQuery
  • #8402 Fixes an issue where browsers implementing window.getComputedStyle completely ignore the “fixed property” in jQuery.css(). This makes the implementation of jQuery.cssProps more generic.
  • #8401 and #8403 .Fixes an issue where jQuery “bulldozes” other IE filters when setting opacity
  • #7071 Corrects an issue where accessing the ‘type’ property on VML elements fails on IE
  • #4321 Fixes an issue where $(“#”) returns “undefined” and an exception on Opera 9.6.
  • #7883 Just like .bind, .delegate (and .live) now accept false as a shortcut for function(){return false;}.
  • #2773 $.fn.is and $.fn.not now accept DOM elements and jQuery collections.
  • #8777 undelegate() now accepts custom namespaced events.
  • #3116 .attr() now also works with read only interfaces of the SVG specification.
  • #8732 Changes feature detection for focusin event support so that IE9 won’t have duplicate vents.
  • #7369 It is now possible to use .closest() on disconnected nodes with attributes.
  • #4366 Fixes an issue where $.each was failing when passed document.styleSheets in IE.
  • #7931 Corrects an issue where both the $.fn.scrollTop and $.fn.scrollLeft setters returned null when called on an empty jQuery object.
  • #8101 We now use requestAnimationFrame instead of setInterval for animations when it’s available
  • #8018 Fixes an issue where unsafe access to frameElement causes errors in crossdomain (i)frames
  • #6180 jQuery.clean no longer affects or modifies script tags which are not of the type text/javascript
  • #3685 Corrects a previous failure when selecting forms with an element named “name”
  • #8790 For cases where an event that is triggered is not native (ie. should not have inline handlers) we should bail out immediately for optimization purposes
  • #8814 Fixed a minor issue where in core.js, we don’t need to check for indexOf in the fallback inArray definition.
  • #7472 and #3113 Fixes an issue where if attribute names in forms share the same names as attribute types (eg, id, name etc) a conflict was being experienced
  • #7054 Ensures that the DOM element ref in an event handler is removed by cleanData to avoid an IE6/7/8 memory leak.
  • #8418 Fixes an issue where attr(“name”,”value”) is not working to set name attribute value in IE 7
  • #7996 Fixes a Safari 5.0.3 bug when trying to use jQuery’s .attr() on a script tag to access an attribute named “event”.
  • #8772 Fixes an issue where IE9 fails to gracefully handle the setting of unsupported input types such as ‘range’.
  • #4283 As part of the .attr() rewrite, false will remove Boolean attributes such as checked.
  • #8699 .attr() no longer returns -1 on missing attributes instead of undefined.
  • #6837 Corrects an issue where IE fails to return the correct value of the default/first item in the select after a form reset, instead returning an empty string
  • #4464 Fixes a bug where IE was unable to get the width attribute of detached IMG elements
  • #7485 Fixes an inconsistency where a selector doesn’t return all elements which have the attribute even if upon checking with the attr() method it returns a value.

jQuery 1.5.2 Released

Posted on by

jQuery 1.5.2 is now out! This is the second minor release on top of jQuery 1.5 and lands a number of fixes for bugs.

We would like to thank the following contributors that provided patches towards this release: azatoth, dmethvin, gnarf37, jaubourg, jboesch, jeresig, jessthrysoee, mathiasbynens, murz, rdworth, rwldrn, and timmywil.

We’d especially like to thank our bug triage team who assisted in narrowing down some of the important fixes needed for this release.

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.2.min.js
Google CDN: https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js

jQuery 1.5.2 Changelog

As this was a bug fix release there are no new features to report upon.

Closed Tickets

A full list of all bugs and tickets closed are as follows:

  • #6158 Fixed replaceWith from throwing errors on non existent elements.
  • #7340 We now use a single capturing handler to simulate bubbling focusin/focusout event on non-IE browsers. Allows native DOM methods to fire events other than the currently active one back into jQuery.
  • #8353 Reverted. Adds a catch block in resolveWith so that the finally block gets executed in IE7 and IE6. Fixes #8438 – an issue where the full functions stack wasn’t visible when debugging in Google Chrome.
  • #8380 Make it so that $(‘:text’) matches <input> as ‘type=text’ is the implied default.
  • #8421 Makes sure resolveWith can be called with only one parameter.
  • #8423 Never set X-Requested-With header automagically for cross-domain requests. Fixes an issue where all cross-domain ajax requests are pre-flighted and require extra additional options.
  • #8456 Fixed an issue where trigger(‘mouseover’) was no longer triggering mouseenter. We make sure parent is not null before crawling into its lap, so mouseenter is triggered on a mouseover event.
  • #8509 Makes URL regexp less overzealous and ensures it recognizes URL schemes which do not contain a conformant hierarchical structure (as per section 2.1.2 of http://www.ietf.org/rfc/rfc2718.txt). Also adds about: and adobe air’s app: and app-storage: to the list of local protocols and provides a failover in case document.location is illformed.
  • #8536 Introduced submodules to the jQuery repository on GitHub.
  • #8381 Fixed .is(“div”) to work on disconnected nodes in IE 9.
  • #8316 Fixed .offset() setter on fixed elements in WebKit.
  • #3333 Fixed incorrect .css(“marginRight”) in WebKit.
  • #8692 Fixed an issue where the arguments object sometimes ended up with undefined values outside the $.when method.
  • #8346 Fixed a compatibility issue with jQuery.camelCase() and IE9 prefixes.
  • #8203 Removed some unnecessary nulling of elements done in the name of an IE memory cleanup.
  • #8519 Prevent the core makefile from applying minification if nothing in the code has actually changed.
  • #8587 Fixed the jQuery-git.js cron-job to ensure that it is being regularly updated.
  • #8635 Corrected an issue with Firefox 3.6 where an issue with getComputedStyle() was resulting in uncaught exceptions.

jQuery 1.5.2 RC 1 Released

Posted on by

Progress is moving along well on the second update of jQuery 1.5 – we’re pleased to announce the release of its first release candidate! Barring any major bugs this should be the code that we end up shipping for jQuery 1.5.2 (which will be happening on March 31st).

jQuery 1.5.2 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.2 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.2 RC 1 Change Log

The current change log of the 1.5.2 release.

  • #6158 Fixed replaceWith from throwing errors on non existant elements.
  • #7340 We now use a single capturing handler to simulate bubbling focusin/focusout event on non-IE browsers. Allows native DOM methods to fire events other than the currently active one back into jQuery.
  • #8353 Reverted. Adds a catch block in resolveWith so that the finally block gets executed in IE7 and IE6. Fixes #8438 – an issue where the full functions stack wasn’t visible when debugging in Google Chrome.
  • #8380 Make it so that $(‘:text’) matches <input> as ‘type=text’ is the implied default.
  • #8421 Makes sure resolveWith can be called with only one parameter.
  • #8423 Never set X-Requested-With header automagically for cross-domain requests. Fixes an issue where all cross-domain ajax requests are pre-flighted and require extra additional options.
  • #8456 Fixed an issue where trigger(‘mouseover’) was no longer triggering mouseenter. We make sure parent is not null before crawling into its lap, so mouseenter is triggered on a mouseover event.
  • #8509 Makes URL regexp less overzealous and ensures it recognizes URL schemes which do not contain a conformant hierarchical structure (as per section 2.1.2 of #http://www.ietf.org/rfc/rfc2718.txt). Also adds about: and adobe air’s app: and app-storage: to the list of local protocols and provides a failover in case document.location is illformed.
  • #8536 Introduced submodules to the jQuery repository on GitHub.
  • #8381 Fixed .is(“div”) to work on disconnected nodes in IE 9.
  • #8316 Fixed .offset() setter on fixed elements in WebKit.
  • #3333 Fixed incorrect .css(“marginRight”) in WebKit.

jQuery 1.5.1 Released

Posted on by

jQuery 1.5.1 is now out! This is the first minor release on top of jQuery 1.5 and lands a number of fixes for bugs.

We would like to thank the following contributors that provided patches towards this release: antonkovalyov, csnover, danheberden, davidmurdoch, dmethvin, gnarf37, jaubourg, jeresig, jitter, jrburke, lrbabe, mathiasbynens, rwldrn, SlexAxton, and voxwerk.

We’d especially like to thank our bug triage team who assisted in narrowing down some of the important fixes needed for this release.

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.1.min.js

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

1.6 Roadmap Meeting

The core jQuery dev team is now taking proposals for changes to land in jQuery 1.6. Right now we’re shooting to release jQuery 1.6 late April/early May and will be meeting to discuss the submitted proposals at Noon EST on March 7th (the meeting will be in #jquery-meeting on irc.freenode.net).

Please submit your proposals through the following form in advance of the March 7th meeting.

jQuery 1.5.1 Changelog

jQuery 1.5.1 Test Swarm Results

API Documentation: jQuery 1.5.1 API Documentation

As this was a bug fix release there are no new features to report upon. The only changes are as follows:

jQuery now supports Internet Explorer 9 as a top level browser. All known bugs have been fixed and/or been reported to the IE team for resolution in the final release.

Three new options were added to jQuery.ajax():

  1. isLocal: Allow the current environment to be recognized as “local,” (e.g. the filesystem), even if jQuery does not recognize it as such by default. The following protocols are currently recognized as local: file, *-extension, and widget. If the isLocal setting needs modification, it is recommended to do so once in the $.ajaxSetup() method.
  2. mimeType: A mime type to override the XHR mime type.
  3. xhrFields A map of fieldName-fieldValue pairs to set on the native XHR object. For example, you can use it to set withCredentials to true for cross-domain requests if needed.


Closed Tickets

A full list of all bugs and tickets closed are as follows:

  • #2551 Make sure .val() works after form.reset() in IE
  • #4537 Make sure .clone(true) correctly clones namespaced events
  • #4966 Don’t add “px” to unit-less properties when animating them
  • #6774 Make sure we only access parentNode if it’s available. Fixes an issue where after an option tag has been detached, an elem.parentNode error would be thrown.
  • #6911Prevent action on disabled elements, both triggering and bound via .live()
  • #7531 Fix again for IE9RC. Enhances ajaxSetup so that it can take an optional target option, in which case target will be updated instead of ajaxSettings. That way, fields that shouldn’t be deep extended can be listed and dealt with in one place. jQuery.ajax now makes use of ajaxSetup with target to create its internal settings object
  • #7568 Follow-up fix for #5862. Objects with a length property weren’t serialized properly by jQuery.param
  • #7653 Changes regexp to detect local protocol so that it will accept any protocol finishing by -extension
  • #7668 Sizzle and jQuery QUnit tests are out of sync
  • #7912 This change makes .cur() more .cssHooks friendly. .cur() now returns the unmodified value by .css() if it isn’t a number, number-alike or a value that needs a fallback to 0.
  • #7922 Fixed an issue where live(‘click’) doesn’t fire when live(‘submit’) is bound first in IE
  • #7945 Make jQuery.param() serialize plain objects with a property named jquery correctly
  • #8033 jQuery 1.4.4+ fails to load on pages with old Prototype (<= 1.5) or Current Prototype + Scriptaculous in IE
  • #8039 Selectors with HTML5 input types not work in IE6/7
  • #8052 Update jQuery.support.noCloneEvent test to function properly in IE9
  • #8095 Properly handles the case where browser cache needs to be bypassed while server-side logic still delivers proper 304 responses. Unit test added
  • #8098 Use the fast document.head when available
  • #8099 Always restore to correct display value based on element’s expected default display
  • #8107 Fix argument handling for $.ajax for multiple method signatues and add test case
  • #8108Temporary fix for jQuery metadata being exposed on plain JS objects when serializing with JSON.stringify to avoid compatibility-breaking changes. A proper fix for this will be landed in 1.6
  • #8115 Renames all references to jXHR with jqXHR in the code (like was done in the doc)
  • #8123 The default for .clone() is to not clone any events
  • #8125 Status is set to 200 for requests with status 0 when location.protocol if “file:”. Added test/localfile.html to control it works
  • #8129 Fix cloning multiple selected options in IE8
  • #8135 Makes sure any exception thrown by Firefox when trying to access an XMLHttpRequest property when a network error occured is caught and notified as an error. Added test/networkerror.html to test the behavior
  • #8138 Access to document.location is made only once at load time and if it fails (throwing an exception in IE when document.domain is already set), we use the href of an A element instead
  • #8145 Added readyWait tests
  • #8146 introducing the xhrFields option with is a map of fieldName/fieldValue to set on the native xhr. Can be used to set withCredentials to true for cross-domain requests if needed
  • #8152 applying the same special cases for protocol “chrome-extension:” as were for “file:” (needs tests). Re-organizes and fixes the handling of special cases for HTTP status code in the xhr transport
  • #8177 XHR transport now considers 304 Not Modified responses as 200 OK if no conditional request header was provided (as per the XMLHttpRequest specification)
  • #8193 Fixes abort in prefilter. No global event will be fired in that case even if the global option is set to true. Unit test added
  • #8198 Remove unnecessary “script.type = text/javascript;”
  • #8200 Unexpose $.support._scriptEval as it’s not needed. Use a private var instead
  • #8209 Make sure that mousing over Chrome “internal div” doesn’t trigger a mouseleave
  • #8219 Introduces the mimeType option to override content-type header in conversion (and in native xhr when possible). Adds companion overrideMimeType method on jqXHR object (it simply sets the option)
  • #8220 Remove backslashes from tag name filter
  • #8245 Ajax now ensures header names are capitalized so that non-compliant xhr implementations don’t override them
  • #8250 ajax does not work in opera 10 widgets
  • #8277 Sets data to undefined rather than null when it is not provided in ajax helpers so that it won’t revent data set in ajaxSettings from being used.
  • #8297 Make sure response headers with empty values are handled properly and do not prevent proper parsing of the entire response headers string.
  • #8353 Adds a catch block in resolveWith so that the finally block gets executed in IE7 and IE6.
  • #8365 Make sure that IE 9 still clones attributes.

jQuery 1.5.1 RC 1 Released

Posted on by

We’re nearing the first update to 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.1 (which will be happening on February 24th).

jQuery 1.5.1 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.1 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.1 RC 1 Change Log

The current change log of the 1.5.1 release.

  • #2551 Make sure .val() works after form.reset() in IE
  • #4537 Make sure .clone(true) correctly clones namespaced events
  • #4966 Don’t add “px” to unit-less properties when animating them
  • #6774 Make sure we only access parentNode if it’s available. Fixes an issue where after an option tag has been detached, an elem.parentNode error would be thrown.
  • #7531 Fix again for IE9RC. Enhances ajaxSetup so that it can take an optional target option, in which case target will be updated instead of ajaxSettings. That way, fields that shouldn’t be deep extended can be listed and dealt with in one place. jQuery.ajax now makes use of ajaxSetup with target to create its internal settings object
  • #7568 Follow-up fix for #5862. Objects with a length property weren’t serialized properly by jQuery.param
  • #7653 Changes regexp to detect local protocol so that it will accept any protocol finishing by -extension
  • #7668 Sizzle and jQuery QUnit tests are out of sync
  • #7912 This change makes .cur() more .cssHooks friendly. .cur() now returns the unmodified value by .css() if it isn’t a number, number-alike or a value that needs a fallback to 0.
  • #7922 Fixed an issue where live(‘click’) doesn’t fire when live(‘submit’) is bound first in IE
  • #7945 Make jQuery.param() serialize plain objects with a property named jquery correctly
  • #8033 jQuery 1.4.4+ fails to load on pages with old Prototype (<= 1.5) or Current Prototype + Scriptaculous in IE
  • #8039 Selectors with HTML5 input types not work in IE6/7
  • #8052 Update jQuery.support.noCloneEvent test to function properly in IE9
  • #8095 Properly handles the case where browser cache needs to be bypassed while server-side logic still delivers proper 304 responses. Unit test added
  • #8098 Use the fast document.head when available
  • #8099 Always restore to correct display value based on element’s expected default display
  • #8107 Fix argument handling for $.ajax for multiple method signatues and add test case
  • #8108Temporary fix for jQuery metadata being exposed on plain JS objects when serializing with JSON.stringify to avoid compatibility-breaking changes. A proper fix for this will be landed in 1.6
  • #8115 Renames all references to jXHR with jqXHR in the code (like was done in the doc)
  • #8123 The default for .clone() is to not clone any events
  • #8125 Status is set to 200 for requests with status 0 when location.protocol if “file:”. Added test/localfile.html to control it works
  • #8129 Fix cloning multiple selected options in IE8
  • #8135 Makes sure any exception thrown by Firefox when trying to access an XMLHttpRequest property when a network error occured is caught and notified as an error. Added test/networkerror.html to test the behavior
  • #8138 Access to document.location is made only once at load time and if it fails (throwing an exception in IE when document.domain is already set), we use the href of an A element instead
  • #8145 Added readyWait tests
  • #8146 introducing the xhrFields option with is a map of fieldName/fieldValue to set on the native xhr. Can be used to set withCredentials to true for cross-domain requests if needed
  • #8152 applying the same special cases for protocol “chrome-extension:” as were for “file:” (needs tests). Re-organizes and fixes the handling of special cases for HTTP status code in the xhr transport
  • #8177 XHR transport now considers 304 Not Modified responses as 200 OK if no conditional request header was provided (as per the XMLHttpRequest specification)
  • #8193 Fixes abort in prefilter. No global event will be fired in that case even if the global option is set to true. Unit test added
  • #8198 Remove unnecessary “script.type = text/javascript;”
  • #8200 Unexpose $.support._scriptEval as it’s not needed. Use a private var instead
  • #8209 Make sure that mousing over Chrome “internal div” doesn’t trigger a mouseleave
  • #8219 Introduces the mimeType option to override content-type header in conversion (and in native xhr when possible). Adds companion overrideMimeType method on jqXHR object (it simply sets the option)
  • #8220 Remove backslashes from tag name filter
  • #8245 Ajax now ensures header names are capitalized so that non-compliant xhr implementations don’t override them
  • #8250 ajax does not work in opera 10 widgets
  • #8277 Sets data to undefined rather than null when it is not provided in ajax helpers so that it won’t revent data set in ajaxSettings from being used.
  • #8297 Make sure response headers with empty values are handled properly and do not prevent proper parsing of the entire response headers string.

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