jQuery Changelog

New in version 2.1.4 / 1.11.3

April 28th, 2015
  • These releases include a hot-fix for a rare bug in iOS 8.2 and 8.3.

New in version 2.1.3 / 1.11.2 (December 19th, 2014)

  • The most significant fix in this release is a workaround for a serious querySelector bug in Safari 8.0 and 7.1.

New in version 2.1.1 (May 2nd, 2014)

  • Exceptions thrown synchronously by xhr.send are not caught
  • Simplify an option hook
  • Avoid use of Object.keys() in cleanData()
  • Android 2.3 doesn’t pass isDefaultPrevented value to bubbled events
  • Use element.matches in alternate selector engine if it’s available
  • “Unsafe HTML” warnings in WWA

New in version 2.1.0 / 1.11.0 (January 28th, 2014)

  • Fewer forced layouts
  • Granular custom builds
  • Published on npm
  • Published on Bower
  • Lower startup overhead

New in version 2.1.0 Beta 1 / 1.11.0 Beta 1 (September 20th, 2013)

  • Now, jQuery is using AMD internally as well, replacing our old modular build system.
  • Now using Bower for a lot of our internal dependency management.

New in version 2.0.3 (July 9th, 2013)

  • Fixed:
  • $.data() can’t retrieve data stored by .data() when key is hyphenated.
  • Invalid HTML passed into .html() throws ‘tmp is null’ error.

New in version 2.0.2 / 1.10.1 (May 31st, 2013)

  • Effects:
  • finish() only finishes last item of a set being .animate()d.
  • 1.10.0 breaks relative animation
  • Selector:
  • SCRIPT70 Permission denied in selectors after iframe was submitted in IE9-10, jQuery 1.9.1 and 2.0.0

New in version 2.0.1 (May 27th, 2013)

  • Relaxed HTML parsing
  • Increased modularity
  • No more IE9 focus of death
  • Cordova bug fix

New in version 2.0.0 (April 19th, 2013)

  • No more support for IE 6/7/8.
  • Reduced size.
  • Custom builds for even smaller files.
  • jQuery 1.9 API equivalence.

New in version 1.9.1 (February 5th, 2013)

  • This release addresses the bugs and regressions that have been reported during the past few weeks.

New in version 1.9.0 (January 16th, 2013)

  • Streamlined API
  • New .finish() method
  • Enhanced cross-browser CSS3 support
  • New .css() multi-property getter
  • Source map support

New in version 1.8.2 (September 21st, 2012)

  • Some inconsistencies/optimizations.
  • Changed licensing.

New in version 1.8.0 (August 10th, 2012)

  • Modularity
  • Sizzle re-architected
  • Animations re-imagined
  • Automatic CSS prefixing
  • More than 160 bugs closed
  • More flexibility with $(html, props)
  • Smaller code size

New in version 1.8 Beta 1 (June 23rd, 2012)

  • Modularity
  • Vendor-Prefixed CSS Properties
  • Animation (Effects)
  • Sizzle CSS Selector Engine
  • XSS Protection

New in version 1.7.2 (March 22nd, 2012)

  • Fixed negative margin issue in animations.

New in version 1.7.1 (November 22nd, 2011)

  • Removed all occurrences of the “equals” and “same” function in the unit tests`.
  • HTML5 Support in .wrapAll() does add a “:” to element.
  • A “null” in the data object can cause an error in stop.
  • Uses internalKey shortcut instead of jQuery.expando.
  • Fixed focus-related test failures to resolve Swarm failures.

New in version 1.7 (November 4th, 2011)

  • New Event APIs: .on() and .off()
  • Improved Performance on Delegated Events
  • Better Support for HTML5 in IE6/7/8
  • Toggling Animations Work Intuitively
  • Asynchronous Module Definition (AMD)
  • jQuery.Deferred
  • jQuery.isNumeric()

New in version 1.7 Beta 1 (September 29th, 2011)

  • Form Change and Submit Events in IE 6/7/8.
  • Animation Improvements.
  • New Event APIs: .on() and .off().
  • .removeData() Enhancements.

New in version 1.6.4 (September 13th, 2011)

  • Data:
  • Data attribute names with single dash-surrounded letters cannot be accessed by the camel-case name.
  • Event:
  • $(“form”).live(“submit”, fn) not fired from <button type=”submit”> in IE8
  • Support:
  • Bug with mime-type application/xhtml+xml in jquery 1.6.3.

New in version 1.6.3 (September 2nd, 2011)

  • Ajax:
  • jQuery.parseXML error handling does not work in webkit browsers
  • Pass statusText through instead of “normalizing” it
  • jQuery.ajaxSetup may cause unnecessary memory usage
  • Typo in ajax.js: status should be jqXHR.status?
  • Encode comment-like Accept headers to avoid mobile carrier mangling
  • Attributes:
  • foo.contents().hasClass() returns incorrect value
  • removeAttr(‘style’) does not consistently remove the style attribute in webkit
  • removeAttr(‘disabled’) doesn’t change input’s color on IE6
  • .prop(‘tabIndex’) returns inconsistent results for elements that have not yet set tabIndex
  • Simplify the attr code by using getAttributeNode for everything in IE6/7
  • Build:
  • Minimal License Header in compressed jQuery
  • Core:
  • XSS with $(location.hash) and $(#) is needed?
  • try-catch isPlainObject detection
  • $.inArray crashes IE6 and Chrome if second argument is `null` or `undefined`
  • CSS:
  • Remove filter:alpha(opacity=100) after animation
  • Support -ms-transform in .css() method
  • Can’t add negative numbers using the relative-value syntax with .css() and .animate()
  • Data:
  • jQuery.data throws a script error in certain circumstances
  • HTML5 data attributes has strange behaviour with if attribute names contain numbers
  • $.fn.removeData does not remove data with a dash in a name
  • Allow non-null|undefined evaluation of data property values
  • jQuery.fn.data() correctly handle access to arbitrary data property values
  • Cannot retrieve “false-y” values under key names with dashes using jQuery.data method
  • Unload from frame’s window breaks in IE8
  • Dimensions:
  • .width() can return a float in Firefox 6
  • Effects:
  • Animations halt when the browser is out of focus due to requestAnimationFrame
  • setInterval cleared by animation
  • Event:
  • Accessing the ‘type’ property on VML elements fails on IE during submit special handler
  • Manipulation:
  • Cloning a div with an object causes error in IE8
  • Support:
  • Visible “t” character in upper left corner during support.js init
  • IE 8 crashes when using background-image on BODY in css
  • Test/support.js module strictEqual typo
  • $.support.scriptEval removed, but still included in documentation

New in version 1.6.3RC1 (August 30th, 2011)

  • Better handling of HTML5 data attribute names.
  • Fix an XSS attack vector.
  • No more animation “worm holes”.

New in version 1.6.2 (July 1st, 2011)

  • Attributes:
  • Using live submit on forms
  • $(elem).attr(eventName) not working properly in IE7
  • attr(“title”) issue in ie7
  • .attr(“value”) does not work for meter elements
  • $(‘form’).attr(‘class’) always return undefined in IE 6
  • removeClass will only remove the first instance of a class
  • Core:
  • Setting data() via an object with hyphenated keys create inaccessible data.
  • jQuery.camelCase() defined in css.js, but used more widely
  • Memory leak noticed when loading jquey.1.6.1.min.js included html pages in the iframe
  • CSS:
  • outerWidth()
  • .css() doesn’t work with relative values on hyphenated properties
  • Dimensions:
  • outerWidth(true) issue
  • Effects:
  • Animation Callbacks fire AFTER the next queue function executes.
  • setInterval cleared by animation
  • Event:
  • Custom trigger
  • Manipulation:
  • (Chrome, Firefox) Second argument (event empty) in jQuery throws error while creating <input>
  • Compatibility Issue with jQuery 1.6 and IE6
  • Support:
  • Version 1.6.0 breaks the background behavior on body element
  • v1.6.1 messes up layout in IE8

New in version 1.6.2 RC 1 (June 15th, 2011)

  • Attributes:
  • Using live submit on forms
  • $(elem).attr(eventName) not working properly in IE7
  • attr(“title”) issue in IE7
  • .attr(“value”) does not work for meter elements
  • $(‘form’).attr(‘class’) always return undefined in IE 6
  • removeClass will only remove the first instance of a class
  • Core:
  • Setting data() via an object with hyphenated keys create inaccessible data.
  • jQuery.camelCase() defined in css.js, but used more widely
  • Memory leak noticed when loading jquey.1.6.1.min.js included html pages in the iframe
  • CSS:
  • outerWidth()
  • .css() doesn’t work with relative values on hyphenated properties
  • Dimensions:
  • outerWidth(true) issue
  • Effects:
  • Animation Callbacks fire AFTER the next queue function executes.
  • Event:
  • Custom trigger
  • Manipulation:
  • (Chrome, Firefox) Second argument (event empty) in jQuery throws error while creating <input>
  • Compatibility Issue with jQuery 1.6 and IE6
  • Support:
  • Version 1.6.0 breaks the background behavior on body element
  • v1.6.1 messes up layout in IE8

New in version 1.6.1 (May 13th, 2011)

  • Attributes:
  • $(‘<option></option>’).val(‘myValue’) no longer sets value
  • .attr(“selected”) returns non-useful value in 1.6
  • 1.6 atrr() Inconsistant in IE7,8
  • Issue with jQuery 1.6: Can’t uncheck checkboxes
  • .attr(‘foo’, true) not setting related DOM property
  • Strange behavior of attr method when generate input element.
  • jQuery does not support enumerated attributes such as contenteditable
  • attr checked bug on radio
  • Data:
  • Changes to $.data illogical in certain case
  • jQuery breaks on use strict
  • Deferred:
  • Returning null or undefined in a pipe filter function causes an exception
  • Effects:
  • Cannot animate position and opacity at same time
  • Order of hide() callbacks has changed
  • Event:
  • When hover over a child of an element, mouseleave fires when using live or delegate
  • Manipulation:
  • jQuery 1.6 Crashes IE 6
  • JavaScript within AJAX fails to load in IE – Error 80020101
  • Queue:
  • Variable tmp in promise implicitly declared?
  • Selector:
  • Slow .add() in IE
  • Selector or find bug in jQuery 1.6
  • Reset pseudo-selector broken
  • Support:
  • Unhandled exception: document.defaultView.getComputedStyle(div, null) is null (FF, hidden iframe)
  • support.boxModel now false in IE6 even when not in quirks mode

New in version 1.6 (May 3rd, 2011)

  • All the aspects of the API that were added, or had a new signature added, in the corresponding version of jQuery.

New in version 1.6 RC 1 (April 27th, 2011)

  • Ajax:
  • Revert $.param should treat empty arrays/objects like empty strings
  • Make compatible with XHR 2
  • When posting AJAX and the data has “??” is formats it to jQuery<timestamp>?
  • .ajax() jsonp requests are not handled correctly when hitting timeout
  • jqXHR breaks names of custom header fields
  • Attributes:
  • removeAttr should use jQuery.props
  • .attr(‘checked’) & XHTML 1.1 Strict
  • IE cannot get width attribute of detached IMG element
  • jQuery.prop missing cellpadding?
  • Tag “img” width/height attribute is zero (IE)
  • Using .attr() to set the ‘target’ attribute, with a node that has ID of ‘target’
  • Opera has inconsistent result for usemap attribute value
  • Make .val(value) faster for common use case
  • $(‘form’).attr(‘id’) return DOM Element
  • Inconsistency between has [attribute] selector and attr() method
  • Permission denied to access property ‘nodeType’ from a non-chrome Firefox/3.5.15
  • Safari $(‘script’).attr(‘event’); Bug
  • .removeAttr don’t works with select element’s size attribute
  • removeAttr issue in webkit, firefox
  • Support for list attribute
  • Set name parameter using attr() method in IE 7
  • attrHooks
  • .val method returning “on” for dynamically created radio buttons in ie9
  • .attr() returns -1 on missing attribute instead of undefined
  • Using .attr() to set input type ‘range’ causes script error in IE9
  • Build:
  • Bug in minifier process
  • Core:
  • A better jQuery.map
  • .attr does not work with SVG IDLs
  • $.each fails in IE with document.styleSheets
  • Store references to location and navigator objects
  • Making jQuery.noConflict() callable anytime
  • Fixing $.proxy to work like (and use) Function.prototype.bind
  • jQuery.globalEval(): Execution Delayed By Remote Scripts in Firefox
  • Script space quota exhausted error when creating a large HTML block with jQuery constructor in Firefox
  • Tests - Update QUnit usage, replace id=main with id=qunit-fixture
  • jQuery.proxy( context, name ) bug in 1.6b1
  • CSS:
  • jQuery tries to access the .style attribute of text tags
  • Support relative values for $().css()
  • offset.js: setOffset uses parseInt to parse css values which may contain floating point numbers
  • Minor enhancement to opacity cssHooks
  • jQuery.cssProps is useless in all browsers but IE6/7/8
  • jQuery Bulldozes Other IE Filters When Assigning Opacity
  • Data:
  • Should data-foo-bar be accessible via .data( ‘fooBar’ ) as well as .data( ‘foo-bar’ ) ?
  • Effects:
  • .animate() when used with large groups of elements is not “in sync”
  • $.fn.animate to implement deferreds
  • Cleanup effects.js to improve performances and reduce filesize
  • SPAN element becomes block level on show()
  • Use requestAnimationFrame instead of setInterval for animations, when available
  • Event:
  • Live mouseenter/mouseleave events don’t fire as expected when nested
  • Mouseenter and mouseleave events not able to be triggered if bound by live
  • namespaced event bubbleing wrong
  • .bind() and .one() don’t allow a function as data
  • Accessing the ‘type’ property on VML elements fails on IE
  • .delegate (and .live) should accept false as the fn arg, like .bind
  • Unsafe access to frameElement causes error in crossdomain (i)frames
  • Exceptions in plain JS object event handlers swallowed by jQuery
  • Custom events don’t bubble up to window
  • Incorrect feature detect for IE9 focusin/focusout
  • jQuery 1.6: jQuery.Event contstructor to support setting properties
  • binding to beforeunload throws an error in IE6, 7, 8 on page unload
  • jQuery 1.6: undelegate() accepts custom namespaced events
  • Reorganize jQuery.event.trigger to use loop instead of recursion
  • Optimize non-attached events such as data events
  • jQuery.holdReady() method
  • Manipulation:
  • val() returns innerHTML for button elements in IE
  • jQuery.clean should not touch script tags that are not of type text/javascript
  • Exception thrown in replaceWith
  • jQuery .offset doesn’t property works when current offset is float (which is possible in FireFox)
  • Setting checked to true on a disconnected checkbox does not carry over after attaching to DOM.
  • Radios and checkboxes revert to default (HTML) state when wrapped in IE
  • Misc:
  • Remove un-needed “someVar = null;”s
  • Wraps strings with double quotes in sources and tests
  • Offset:
  • scrollTop and scrollLeft setters return null when called on empty jquery object
  • Selector:
  • Selector fails for forms with an element named “name”
  • $(“#”) returns undefined
  • :focus selector filter
  • Traversing:
  • $.fn.is and $.fn.not should accept DOMelements and jQuery collections
  • Allow jQuery.fn.is to accept a function
  • $().add(selectElement) adds option children instead
  • $(‘<div>ff</div>’).closest(‘[attr]‘); raises exception in all browsers
  • Result of .find(” “) is undefined

New in version 1.6 Beta 1 (April 16th, 2011)

  • Optimizes regex for innerHTML to allow more html snippets to use faster method.
  • When getting data- attributes, after-cap any embedded dashes per the W3C HTML5 specs.
  • Fixes an issue where an IE form isn’t submitted when disabling the submit button in a submit callback.
  • Fixing inconsistency with width/height on inputs.
  • Adds support for explicit/relative string values in .css().
  • Fixes $.proxy to work like (and use) Function.prototype.bind.
  • Allows special properties to be explicitly defined on jQuery.Event objects.
  • Bypass regexp filter on $.parseJSON and use native thrown exceptions if window.JSON.parse is available.
  • Fixes an issue where if removing the width and height attributes in IE6/7, setting to “” actually sets to 0 instead of auto.
  • Fixes an issue where if you have a DOM node with the ID of ‘target’ and you try and set a target it fails.
  • Makes sure script transport abort method actually removes the script tag even if readyState exists.
  • Bubble custom events to the window when they are triggered.
  • Fixes an uncaught exception in Firefox and removes unnecessary “manual” garbage collection.
  • Fixes an issue where live event callbacks can get out of order in the event liveHandler function.
  • Disables the JSONP replacement for $.ajax() JSON POST.
  • Fixes an issue where SPAN elements become block level on show().
  • Fixes an issue where DOM 0 event handlers are called twice when a separate handler is attached via jQuery.

New in version 1.5.2 (April 1st, 2011)

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

New in version 1.5.2 RC1 (March 25th, 2011)

  • Introduced submodules to the jQuery repository on GitHub.
  • Fixed .is(“div”) to work on disconnected nodes in IE 9.
  • Fixed .offset() setter on fixed elements in WebKit.
  • Fixed incorrect .css(“marginRight”) in WebKit.

New in version 1.5.1 (February 25th, 2011)

  • Three new options were added to jQuery.ajax():
  • 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.
  • mimeType: A mime type to override the XHR mime type.
  • 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 bugs:
  • Make sure .val() works after form.reset() in IE
  • Make sure .clone(true) correctly clones namespaced events
  • Don’t add “px” to unit-less properties when animating them
  • 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.
  • Prevent action on disabled elements, both triggering and bound via .live()
  • 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
  • Follow-up fix for #5862. Objects with a length property weren’t serialized properly by jQuery.param
  • Changes regexp to detect local protocol so that it will accept any protocol finishing by -extension
  • Sizzle and jQuery QUnit tests are out of sync
  • 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.
  • Fixed an issue where live(‘click’) doesn’t fire when live(‘submit’) is bound first in IE
  • Make jQuery.param() serialize plain objects with a property named jquery correctly
  • jQuery 1.4.4+ fails to load on pages with old Prototype (<= 1.5) or Current Prototype + Scriptaculous in IE
  • Selectors with HTML5 input types not work in IE6/7
  • Update jQuery.support.noCloneEvent test to function properly in IE9
  • Properly handles the case where browser cache needs to be bypassed while server-side logic still delivers proper 304 responses. Unit test added
  • Use the fast document.head when available
  • Always restore to correct display value based on element’s expected default display
  • Fix argument handling for $.ajax for multiple method signatues and add test case
  • Temporary 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
  • Renames all references to jXHR with jqXHR in the code (like was done in the doc)
  • The default for .clone() is to not clone any events
  • Status is set to 200 for requests with status 0 when location.protocol if “file:”. Added test/localfile.html to control it works
  • Fix cloning multiple selected options in IE8
  • 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
  • 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
  • Added readyWait tests
  • 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
  • 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
  • XHR transport now considers 304 Not Modified responses as 200 OK if no conditional request header was provided (as per the XMLHttpRequest specification)
  • 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
  • Remove unnecessary “script.type = text/javascript;”
  • Unexpose $.support._scriptEval as it’s not needed. Use a private var instead
  • Make sure that mousing over Chrome “internal div” doesn’t trigger a mouseleave
  • 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)
  • Remove backslashes from tag name filter
  • Ajax now ensures header names are capitalized so that non-compliant xhr implementations don’t override them
  • Ajax does not work in opera 10 widgets
  • 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.
  • Make sure response headers with empty values are handled properly and do not prevent proper parsing of the entire response headers string.
  • Adds a catch block in resolveWith so that the finally block gets executed in IE7 and IE6.
  • Make sure that IE 9 still clones attributes.

New in version 1.5.1rc1 (February 19th, 2011)

  • Make sure .val() works after form.reset() in IE
  • Make sure .clone(true) correctly clones namespaced events
  • Don’t add “px” to unit-less properties when animating them
  • 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.
  • 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
  • Follow-up fix for #5862. Objects with a length property weren’t serialized properly by jQuery.param
  • Changes regexp to detect local protocol so that it will accept any protocol finishing by -extension
  • Sizzle and jQuery QUnit tests are out of sync
  • 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.
  • Fixed an issue where live(‘click’) doesn’t fire when live(‘submit’) is bound first in IE
  • Make jQuery.param() serialize plain objects with a property named jquery correctly
  • jQuery 1.4.4+ fails to load on pages with old Prototype (<= 1.5) or Current Prototype + Scriptaculous in IE
  • Selectors with HTML5 input types not work in IE6/7
  • Update jQuery.support.noCloneEvent test to function properly in IE9
  • Properly handles the case where browser cache needs to be bypassed while server-side logic still delivers proper 304 responses. Unit test added
  • Use the fast document.head when available
  • Always restore to correct display value based on element’s expected default display
  • Fix argument handling for $.ajax for multiple method signatues and add test case
  • Temporary 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
  • Renames all references to jXHR with jqXHR in the code (like was done in the doc)
  • The default for .clone() is to not clone any events
  • Status is set to 200 for requests with status 0 when location.protocol if “file:”. Added test/localfile.html to control it works
  • Fix cloning multiple selected options in IE8
  • 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
  • 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
  • Added readyWait tests
  • 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
  • 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
  • XHR transport now considers 304 Not Modified responses as 200 OK if no conditional request header was provided (as per the XMLHttpRequest specification)
  • 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
  • Remove unnecessary “script.type = text/javascript;”
  • Unexpose $.support._scriptEval as it’s not needed. Use a private var instead
  • Make sure that mousing over Chrome “internal div” doesn’t trigger a mouseleave
  • 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)
  • Remove backslashes from tag name filter
  • Ajax now ensures header names are capitalized so that non-compliant xhr implementations don’t override them
  • Ajax does not work in opera 10 widgets
  • 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.
  • Make sure response headers with empty values are handled properly and do not prevent proper parsing of the entire response headers string.

New in version 1.5 (February 1st, 2011)

  • Adjacent traversal performance.

New in version 1.5 Beta 1 (January 15th, 2011)

  • 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

New in version 1.4.4 (November 12th, 2010)

  • New features:
  • .fadeToggle()
  • Changes:
  • Added a new animation method, .fadeToggle().
  • Calling .data() with no arguments now includes data from HTML5 data- attributes.
  • Moved jQuery.props from support.js to attributes.js.
  • .width() and .height() now report the width and height of hidden elements.
  • stopImmediatePropagation was not being honoured in live/delegate event handlers.
  • Fixed an issue where host and protocol were not compared case-insensitively when determining whether an AJAX request was local or remote.
  • Fixed an issue where the “clone” variable was not being declared correctly.
  • Fixed a bug where we only change the ID on nodes that don’t already have an ID for rooted qSA.
  • Limited the scope of the CSS ‘auto’ change to just height/width.
  • Fixed a bug to ensure that unquoted attribute selectors are quoted (allowing them to go into qSA/matchesSelector properly.
  • Fixed a bug to ensure that if additional load events are triggered (eg. an iframe being dynamically injected in DOM ready) the ready event isn’t triggered twice.
  • Fixed a condition that prevents attr from working on non-Element nodes.
  • Changing an HTML5 data attribute after calling .data(‘foo’) no longer causes .data(‘foo’) to also change.
  • 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.
  • Fixed a bug to ensure accessing computed CSS for elements returns ‘auto’ instead of ” consistently.

New in version 1.4.4 Release Candidate 2 (November 4th, 2010)

  • (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)
  • (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)

New in version 1.4.3 (October 18th, 2010)

  • CSS Module Rewrite.
  • HTML 5 data- Atributes.
  • The performance of nearly all the major traversal methods has been drastically improved. .closest(), .filter() (and as a result, .is()), and .find() have all been greatly improved.
  • A convenient shortcut for binding a function that does nothing but return false (preventing the default action and stopping the event bubbling).
  • A simple method for determining if an object is likely to be a window.

New in version 1.4.3 Release Candidate 1 (October 11th, 2010)

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

New in version 1.4.2 (February 20th, 2010)

  • Performance Improvements:
  • The performance of calling .bind() and .unbind().
  • The performance of .empty(), .remove(), and .html().
  • The performance of inserting a single DOM node into a document.
  • The performace of calling $("body").
  • Bug Fixes:
  • Remove existing foo[] when traditional = false in param.
  • Problem with getJSON callback does not firing.
  • Removed the Need for setArray.

New in version 1.4.1 (January 30th, 2010)

  • New Features:
  • .live(“focus”) and .live(“blur”) now work – mapping to .live(“focusin”) and .live(“focusout”). (Documentation, Ticket)
  • .live(“hover”) now exists, mapping to .live(“mouseenter mouseleave”). (Documentation, Ticket)
  • It’s now possible to bind multiple event types with live. (Documentation, Ticket)
  • Calling .die() (with no arguments) removes all bound live event handlers. (Documentation, Ticket)
  • .height( function ) and .width( function ) now exist. (Height Documentation, Width Documentation, Ticket)
  • jQuery.parseJSON has been exposed, allowing you to parse JSON strings into JavaScript objects. (Documentation, Ticket)
  • jQuery.error has been exposed, to be used by plugin developers to provide informative user feedback. (Documentation, Ticket)
  • Bug fixes:
  • window.JSON can’t take an empty string
  • Multi event bind() causes namespacing to fail
  • bind() with special events causes things to get corrupted (Ticket 1, Ticket 2)
  • Change event broken in IE
  • Unable to preventDefault on live submit
  • Select change event firing on first focus
  • .live() is affecting inline scripts
  • Stop live click from triggering on right click
  • prev/nextUntil needs to check for non-elements
  • Make sure filter/not only does it on elements
  • Make sure animations only happen if speed is truthy or 0
  • ajaxError not firing on 404 for load
  • If data has length breaks param
  • Make sure context is set back to original in all cases
  • Don’t deep extend context
  • Don’t attempt to set the readyState
  • Parsererror cause lost
  • Make sure .offset(coords) return a jQuery set
  • Make sure .html() is XHTML purified
  • Cloned checkbox checked aren’t cloned in WebKit
  • replaceWith(fn) function scope is useless
  • wrapInner(fn) is inconsistent with wrapInner(html)
  • .remove() not removing generic handler
  • Possible memory leak with remove()/events in IE

New in version 1.4 (January 15th, 2010)

  • AJAX:
  • Nested param serialization.
  • JSON and script types auto-detected by content-type.
  • Etag support has been added.
  • Strict JSON parsing, using native JSON.parse.
  • Serialize HTML5 elements.
  • Context for Ajax Request.
  • Success callback receives XHR object as third argument.
  • Explicitly set a content-type.
  • Explicitly specify a JSONP callback name
  • Avoid pre-flighting cross-domain XHR
  • Query.ajax() is now using onreadystatechange instead of a timer
  • Attributes:
  • The performance of .css() and .attr() has been improved.
  • The .attr() takes a function setter.
  • .val( Function )
  • .text() works on text and CDATA nodes
  • Core:
  • Quick Element Construction
  • .eq(-N), .get(-N)
  • New .first() and .last() methods
  • New .toArray() method
  • jQuery() returns empty set
  • jQuery(“TAG”)
  • jQuery(“< div >”) jQuery(“< div/ >”) and jQuery(“< div ></ div >”)
  • CSS:
  • The performance of the .css() method has seen a 2x performance improvement.
  • The performance of the .addClass(), .removeClass(), and .hasClass() methods has seen a 3x performance improvement.
  • .toggleClass() can toggle multiple classes
  • Data:
  • .data() returns Object and .data(Object) sets the object
  • Data cache is no longer created if it isn’t needed
  • Effects:
  • Per-property Easing
  • Events:
  • New Method: jQuery.proxy()
  • Event Multi-binding
  • `change` and `submit` events normalized
  • New events: `focusin` and `focusout`
  • All Events Can Be Live Events
  • live/die now work with context
  • Make sure ready event has body at least
  • Unload is sped up in non-IE browsers that don’t need memory leak hand-holding.
  • Manipulation:
  • Performance of .append(), .prepend(), .before(), and .after() has been improved.
  • Performance of .html() has been improved by nearly 3x.
  • Performance of .remove() and .empty() has seen over a 4x speed increase.
  • New Method: .detach()
  • New unwrap() method.
  • Caching in domManip
  • before, after, replaceWith on disconnected nodes
  • .clone(true) also clones data
  • Offset:
  • .offset( coords | Function )
  • Queue:
  • New .delay() method
  • .clearQueue()
  • Selectors:
  • “#id p” is faster
  • Traversing:
  • .index(), .index(String)
  • New .has() method
  • New .nextUntil(), .prevUntil(), .parentsUntil() methods
  • .add(String, Element)
  • .closest(filter, DOMElement)
  • Utilities:
  • jQuery.isEmptyObject()
  • jQuery.isPlainObject()
  • jQuery.contains() (jQuery.contains() documentation, commit)
  • jQuery.noop (jQuery.noop() documentation, commit)
  • jQuery.unique()
  • Miscellaneous:
  • jQuery.browser is now engine-centric
  • Better support for applets
  • No longer use arguments.callee
  • Now use Closure Compiler instead of YUI Min
  • Internal Reorganization:
  • The old ‘core.js’ file has been split apart into ‘attribute.js’, ‘css.js’, ‘data.js’, ‘manipulation.js’, ‘traversing.js’, and ‘queue.js’.
  • The ready event has been moved into core.js (as it’s a fundamental part of jQuery itself).
  • The majority of core matches the new jQuery Core Style Guidelines.
  • The logic for CSS and attributes have been split and aren’t so intertwined anymore.
  • Testing:
  • Fixed 207 bugs.
  • 3060 tests.

New in version 1.3.1 (January 29th, 2009)

  • Bug fixes:
  • #id returns nothing in XML documents
  • input[name^="types["] Selector Fails
  • selector.js in svn currently missing ';' so can't be packed (with fix)
  • (nth/first/last)-child selector bug
  • .attr('tabindex') returns wrong value for non-link anchors
  • :first selector selects all elements
  • Content type application/xhtml+xml in Firefox broken in FF 3
  • [name!=val] failing
  • BUGFIX for: "If IE and not an iframe... continually check to see if the document is ready"
  • timeout appears to have problems
  • :eq() failing
  • Upgrade copyright year in MIT-LICENSE.txt
  • Cannot use jQuery 1.3 in XUL pages
  • Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7 jquery-1.3.js (line 4095)
  • Child selector bug
  • RemoveClass with null parameter throws error
  • the timeStamp property is sometimes not consistent in Firefox
  • Class name selector broken with capital letters on Safari Version 3.1.2 (5525.20.1)
  • Complex selector using :not() can lead to an infinite loop
  • live() does not work for a non-existent id selector
  • Sizzle.filter and xml
  • table tr:first > *:not(:first), doesn't work
  • Attribute selector with an class seperator(':') in it, fails.