Ten Years of jQuery and Beyond

Posted on by

On the 14th of January 2006, John Resig went to an event called BarCamp NYC to talk about some of the projects he was working on. One of those projects was a JavaScript Library called jQuery. It was the birth of what has become the most widely used JavaScript library ever written.

It’s hard to imagine now, but there were already about a dozen JavaScript libraries around on that day when John announced jQuery, trying to solve basically the same problem. There was no guarantee that yet another library was needed, or that jQuery would go anywhere. Yet slowly and surely over the past decade, jQuery has been widely adopted. It’s hard to find a web developer today who doesn’t know it, or a web page that doesn’t use it.

Code alone isn’t what made jQuery unique and drove its popularity. It took a strong community of users and contributors who pitched in to help newcomers master the library. John made a point of listening carefully to the community and incorporating feedback from those interactions which made both the code and documentation better. jQuery was shaped by the people who used it and appreciated the way it simplified development across multiple browsers. What makes this story even more remarkable is that it all began in an era before Github and StackOverflow!

Based on the experience and community insights that arose from jQuery development, the jQuery Foundation was formed in 2012. It included not only the jQuery projects but tools for other parts of the development lifecycle such as QUnit for testing and Globalize for internationalization. Last year, we joined with the Dojo Foundation and expanded the set of projects we support to include Dojo, Grunt, Lodash and more.

The Foundation continues to be guided by the principles that made jQuery a success and advocating for things like inclusiveness, diversity in teams and empowering contributors to lead within the open source community. As we move into 2016 and the number of projects we support grows, so do the ecosystems being built around those projects. An ecosystem thrives when its projects collaborate and share core principles. By enabling that collaboration, we hope to encourage new ideas and different points of view in open source JavaScript.

In Internet years, a decade is an eternity; web development has changed immensely in that time as has the web itself. Yet the basic formula for success in an open source project has been constant: start with a good idea, adapt it to the needs of users (even as those needs change), and get the community involved in all aspects of the project. Let’s measure our success not in the code that we write, but in what users create using our code and how it inspires them to push the web even further.

Here’s to another decade of awesome open source innovation in JavaScript!

jQuery Migrate 1.3.0 Released

Posted on by

With jQuery 1.12.0 and 2.2.0 out the door, this is a good time to freshen up the jQuery Migrate plugin as well. This plugin provides diagnostics that can simplify upgrading to new versions of jQuery, since it can root out any uses of deprecated APIs or other changes in jQuery that may affect your code.

The 1.3.0 version of jQuery Migrate adds a few more warnings for features that have been deprecated and will help you prepare for jQuery 3.0 which will be out soon. (The next version of jQuery Migrate with full support for jQuery 3.0 will have even more new features, but we’ll save that news for later.) A complete list of the changes made in jQuery Migrate 1.3.0 can be found in the issue tracker. That’s also where you can report a bug if you find one. Be sure to provide a test case that reproduces the problem. We like to use jsbin.com or jsfiddle.net.

In particular, there is an issue with the combination of jQuery 1.12.0, jQuery UI 1.11.4, and the older jQuery Migrate 1.2.1 that can cause an error with methods such as .outerWidth. If you’re experiencing this error after upgrading to the latest jQuery, please upgrade to this version of jQuery Migrate and the problem should be solved. This release also debuts the jQuery.migrateVersion property, which as you might expect is the string "1.3.0" this time around.

You can get this new version at all the old familiar places:

jQuery CDN: https://code.jquery.com/jquery-migrate-1.3.0.js or https://code.jquery.com/jquery-migrate-1.3.0.min.js

npm: Just npm install jquery-migrate@1.3.0 which is listed at https://www.npmjs.com/package/jquery-migrate.

Bower: In your bower.json file, you can use the following in the dependencies section to copy the CDN file:

 "dependencies": {
    ...
    "jquery-migrate": "https://code.jquery.com/jquery-migrate-1.3.0.js"
  },

As always, we recommend that you use jQuery Migrate as a tool to find and fix issues when upgrading web sites to new versions of jQuery and associated plugins. The non-minified version provides extensive diagnostics on the console. Take advantage of them, we built them for you!

Many thanks to all the people who reported bugs and provided code or other help, including c24w, g7015412-trbvm-com, gibson042, KingRial, markelog, mgol, Mottie, thbaymet, timmywil, ocean90, wbinnssmith, and wisec.

jQuery 2.2 and 1.12 Released

Posted on by

To usher in the new year, the jQuery team has been hard at work on 2 new releases: jQuery 1.12.0 and 2.2.0! These releases include lots of bug fixes and improvements to make your cross-browser development experience better. We anticipate this to be the last releases for the 1.x and 2.x branches before we release jQuery 3.0. Since jQuery 3.0 will have some breaking changes, we will continue to support 1.12 and 2.2 after jQuery 3.0 is released, but only with patches for major regressions. As a side-note, we will have some big news related to jQuery 3.0 coming soon!

Performance Improvements

Performance of the selector engine has improved thanks to a shortcut path that immediately uses precompiled Sizzle selectors when the selector cannot be processed by the native querySelectorAll or matchesSelector methods. This results in a significant speedup in some real-world cases.

New Features

We’ve added some minor, non-breaking features that we thought might be useful in these releases. Here are some of the highlights.

SVG Class Manipulation

While jQuery is a HTML library, we agreed that class support for SVG elements could be useful. Users will now be able to call the .addClass(), .removeClass(), .toggleClass(), and .hasClass() methods on SVG. jQuery now changes the class attribute rather than the className property. This also makes the class methods usable in general XML documents. Keep in mind that many other things will not work with SVG, and we still recommend using a library dedicated to SVG if you need anything beyond class manipulation.

jQuery.post(options) and jQuery.get(options)

These ajax shortcuts have a new signature that takes a single object containing options.

jQuery.post({
  url: “/example”
});

Symbol/iterator support

We’ve added support for the Symbol type and iterators via Symbol.iterator added in ES6/ES2015. “Symbol” will be detectable with jQuery.type, and jQuery objects can be iterated with for-of where supported.

for (element of $elements) {
  console.log(element);
}

jQuery.htmlPrefilter()

A new hook has been added for filtering HTML that is passed to jQuery DOM manipulation methods like .html(), .append(), and .replaceWith(). The default prefilter translates single tags to XHTML-compatible tags. This method will allow users to bypass certain edge cases, remove scripts, and sanitize input.

jQuery.uniqueSort alias

To make it clear that jQuery.unique() also sorts, we’ve update the name. jQuery.unique will still exist, but jQuery.uniqueSort will become the documented method. This method is still only intended to sort DOM elements in document order; it is not a general sorting method.

——————————————-

We do not expect this release to have any breaking changes, but if you do encounter bugs in upgrading from the previous version, please let us know.

You can include these files directly from the jQuery CDN if you like, or copy them to your own local server. The 1.x branch includes support for IE 6/7/8 and the 2.x branch does not.

https://code.jquery.com/jquery-1.12.0.js

https://code.jquery.com/jquery-2.2.0.js

These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at https://jquery.com/download/. Public CDNs receive their copies today, please give them a few days to post the files. If you’re anxious to get a quick start, use the files on our CDN until they have a chance to update.

Many thanks to all of you who participated in this release by testing, reporting bugs, or submitting patches, including Chris Antaki, Connor Atherton, Jason Bedard, Batiste Bieler, Leonardo Braga, Bastian Buchholz, Anne-Gaelle Colom, David Corbacho, Brenard Cubacub, Aurelio De Rosa, Hamish Dickson, Ben Edelman, Stephen Edgar, Esteban, Alexander Farkas, Joelle Fleurantin, flexphperia, Corey Frang, Xue Fuqiao, Oleg Gaidarenko, Richard Gibson, Michał Gołębiowski, Scott González, goob, Christian Grete, Veaceslav Grimalschi, Mu Haibao, Dan Hart, Frederic Hemberger, Sean Henderson, Nicolas Henry, Daniel Herman, Jon Hester, Victor Homyakov, Winston Howes, Daniel Husar, Yongwoo Jeon, Essam Joubori, Taehee Kim, Richard Kraaijenhagen, Veres Lajos, Marek Lewandowski, Reed Loden, George Mauer, Richard McDaniel, Amit Merchant, Calvin Metcalf, Dave Methvin, MightyBranch, Nazar Mokrynskyi, Matthew Mueller, Julian Alexander Murillo, Martin Naumann, Daniel Nill, Alexander O’Mara, Adrian Olek, Randson Oliveira, James Pearce, Gilad Peleg, Bruno Perel, PhistucK, PJ, Senya Pugach, Aditya Raghavan, Liza Ramo, Chris Rebert, Anthony Ryan, Gabriel Schulhof, Mike Sidorov, Nick Stefan, Arthur Stolyar, Zheming Sun, Jun Sun, Timo Tijhof, Ben Toews, Thomas Tortorini, Shivaji Varma, Arthur Verschaeve, Rick Waldron, Bin Xin, Norman Xu, Gary Ye, Imran M Yousuf, and Jörn Zaefferer.

 

Full changelogs

2.2.0

Ajax

  • Remove workaround for IE6/7 (e519098)
  • remove event dependency from the ajax module (4e7f34f)
  • Fix for request aborted in ajaxSend (#1775, 598ed05)
  • use anchor tag for parsing urls (#1875, b091fdb)
  • simplify jQuery.parseXML method (5a0867d)
  • Fix cross-domain detection test for non-default port (83b038f)
  • $.post and $.get can now take an options object (#1986, 89ce0af)
  • simplify one ajax call and add explanatory comment (0ac28ed)
  • make jQuery#load “type” field explicit (4ef120d)
  • replace “jqXHR.complete” callback with “always” (97ef1f2)
  • remove use of jQuery#each second argument (a4715f4)
  • remove “onunload” event handler (a117dd0)
  • Remove jsonp callbacks through “jQuery#removeProp” method (#2323, a2ae215)
  • Account for Android 2.3 not firing window.onerror on script errors (6044fb6)
  • do not quote “throws” option – use dot notation instead (#2571, c9cf250)
  • correct indentation (cb087ce)
  • improve content-type detection (#2584, 239169b)
  • trigger error callback on native abort (#2079, 76e9a95)
  • Don’t throw exceptions on binary data response (#2498, 769446c)
  • code style fixes (8a896df)

Attr

  • Use typeof check for getAttribute method (075da30)

Attributes

  • exclusively lowercase A-Z in attribute names (22c33bf)
  • remove unnecessary element null check (55ac56a)
  • Use the option val hook in select val hook and simplify it (#1902, f6302b0)
  • fix failing test for new return value (5dc4616)
  • add SVG class manipulation (#2199, 20aaed3)
  • revert returning null for non-elements (7632b74)
  • fix tabIndex on in IE11 (#2647, c752a50)
  • revert returning null for non-existent attributes (2905961)
  • removeClass() -> attr(“class”, “”) (5db1e05)
  • Use simpler boolean check vs a function call (4bf1a09)
  • return null when attribute does not exist (#2118, aaeed53)

Authors

  • Update AUTHORS.TXT and .mailmap (03557db)

Build

  • Update QUnit to latest (1.17.1) (2d5c5d2)
  • Acknowledge Android 2.3 is not ES5-compatible (#2478, 1c59b30)
  • space between curly and paren is optional (#2399, 63a577a)
  • Moved JSHint directives to .jshintrc file (15a609f)
  • update AUTHORS.txt (8f13997)
  • Add a comment explaining why the es3 option is needed (669cb16)
  • Upgrade to commitplease 2.0.0 (5bc1ddc)
  • Refactor Node smoke tests (9c8a3ec)
  • update version to 3.0.0-pre (7a607c5)
  • Fix various typos (dc4b914)
  • Update jscs and lint files (#2056, 10fdad7)
  • correct jscs paths (99975c4)
  • Remove empty define({}) from build output (#1768, 2c1b556)
  • correct style tests files which could be automatically corrected (e35bdc1)
  • Update commitplease dev dependency (39b7606)
  • Update grunt-contrib-jshint (1556c46)
  • remove bower.json lint target (285cfbf)
  • fix tests in AMD mode (6051609)
  • Update grunt-contrib-uglify because of a security issue in uglify (835e921)
  • Update the license attribute (#2331, 8e92e1e)
  • update requirejs dependency to 2.1.17 (#2290, a644101)
  • bower.json: remove moot `version` field (61e21a4)
  • put back “lint” command to the “dev” list (5adf04a)
  • Upgrade to grunt-bowercopy 1.0.0 (323e82c)
  • account for version labels in Sizzle versions (#1939, 78ac753)
  • update node dependencies (9101704)
  • Sizzle version labels must start with a dash (d6c97ab)
  • Don’t assume the browser environment; smoke test on Node w/ jsdom (#1950, 76df9e4)
  • Remove dates from copyright notice (66e1b6b)
  • Specify valid components for commit messages (0c9d018)
  • Fix an email address of a contributor (ab30934)
  • Remove unused Sizzle test files (8d11310)
  • Move all external libraries to external directory (c5d9d88)
  • Don’t install jsdom 3 on Node.js 0.10 & 0.12 by default (#2519, dbb2daa)
  • use different versions of jsdom for Node and iojs testing (#2266, 5c3101f)
  • Rearrange grunt/npm tasks into a build/dist/test pattern (bb928bd)
  • Remove npm from dependencies (b92acf7)
  • Sanctify the component name status of Wrap (a4133ff)
  • Drop io.js testing, test on latest Node.js (250a199)
  • Use double quotes in .travis.yml (06320c8)
  • Test on Node 5 (cbe5b2b)
  • Speed up the Travis build (31f4f8e)
  • Remove a double empty line at the end of .travis.yml (cea94a8)
  • ignore test dependencies for npm install (35f8e15)
  • update Sizzle to 1.11.1 and include license (c0b23e2)
  • update grunt-bowercopy (712e78c)
  • Add “deprecated” to the Testswarm module list (1144e75)
  • Update license (4f776e5)
  • update Sizzle (#2042, #1969, 3a0dd5a)
  • Move test to appropriate module (fbdbb6f)
  • update Sizzle to 2.0.0 (bcca4f0)
  • add mailmap entry (3ec73ef)
  • drop bower; use npm for front-end deps (#15186, e1949f4)
  • update front-end dependencies (8356948)
  • fix broken assertions caused by QUnit update (8b6aeae)
  • Change the 2.2-stable version to 2.2.0-pre (c56e8b6)
  • Update native-promise-only (again) (f5aa89a)
  • update Sizzle to 2.2.1 (#2390, 44f8239)
  • Update native-promise-only (0065e1f)
  • remove deprecated JSHint options (34da7d5)
  • save sinon update for later (#2160, 98c25b7)
  • update node dependencies barring jscs (8e3a0ce)
  • update grunt-jscs-checker and pass with the new rules (c869a1e)
  • update source map options for the new grunt jshint (269a27c)
  • Fixed issue with base path that contain ‘var’ (#2450, 0c34e68)

Callbacks

CONTRIBUTING

  • Condense info and add directions to other resources (#1824, bfd5dab)
  • Close parenthesis (609adf6)

Core

  • Align branches: remove an unused variable, add comments (f6de5a9)
  • use interactive to evaluate dom ready, barring IE9-10 (#2100, dabd5ba)
  • Test all factory use cases from intro.js (#2181, ab40725)
  • add workaround for iOS JIT error in isArrayLike (#2145, 1541664)
  • CSS:Event: simplification of native method signatures (85577a3)
  • allow init to accept an alternate rootjQuery for migrate’s sake (#2101, 7a6931d)
  • remove isArraylike check for nodes (#2238, 436f0ae)
  • Standardize indexOf comparisons (53aa87f)
  • Support Symbol wrapper objects in jQuery.type (8a73434)
  • make isNumeric test work on Symbol (0703fd5)
  • CSS: disable 2 tests for Opera 12 (13d2de7)
  • Remove unnecessary parameter to jQuery#constructor (98cee73)
  • Update tested jsdom, drop obsolete workarounds (#2153, 06f6cd1)
  • change jQuery.each and jQuery#each signatures (#2090, 2380028)
  • re-introduce createHTMLDocument in parseHTML; Safari 8 left out (cfe468f)
  • revert addition of createHTMLDocument. Thanks, Safari 8. (b779831)
  • Consistently use local reference to access() (2fb719e)
  • pass empty string to createHTMLDocument to appease IE (31c7d7f)
  • remove unnecessary support test for createHTMLDocument (5923282)
  • use document.implemenation.createHTMLDocument in jQuery.parseHTML (58c2460)
  • Simplify and speed up .each (eeda11c)
  • simplify “each” stylesheet iteration test (fcb6c4d)
  • add unit test for isPlainObject(Symbol) (#2645, 9090d98)
  • Follow the AMD specification for define (892625b)
  • Make jQuery objects iterable (#1693, bb026fc)
  • Use window.setTimeout & friends instead of global equivalents (#2177, 219c749)
  • Don’t expose jQuery.access (#2513, 9adfad1)
  • Switch from modules to just window.setTimeout etc. (842958e)
  • Drop strundefined variable (29838b6)
  • organize prop & attr code to be similar (5153b53)
  • Adjust comments & tests after dropping Safari 6 support (93bee47)
  • .each/.map should accept an undefined/null value (#2267, bf48c21)
  • Add a support comment for Safari 8 (d242753)

Css

  • Fix the “sanity check” test (995f707)
  • Remove non-functional unit test for negative margin (4ab7431)

CSS

  • fix :visible/:hidden selectors for inline element w/ content (#2227, 79bcb29)
  • save 20 bytes in css/support (45ec73f)
  • Don’t name the anonymous swap function (0019a46)
  • Correct misrepresentation of “auto” horizontal margins as 0 (#2237, 487d5ca)
  • Use pre-defined displays for html and body (a772418)
  • Support relative adjustment in any applicable unit (#1711, 9b03f6d)
  • use isFinite in place of redundant isNumeric (3689963)
  • Clean up memory leak in reliableMarginRight (#1795, 7d15b4d)
  • Correct typo in the comment (7e09619)
  • elements are hidden when either offsetWidth or offsetHeight is zero (#10406, #13132, 10399dd)
  • Add animation-iteration-count to cssNumber, fix tests (#2792, b9a6958)
  • Don’t cache unrecognized CSS property names (#2015, d471842)
  • Collapse a double if statement into one (7855a1a)
  • Add unit tests for negative margins and positioning (1b932bb)
  • Work around an IE11 fullscreen dimensions bug (#1764, 90d828b)
  • Restore the hack to get pixels for .css(‘width’) etc. (3747cc6)
  • make the getStyles function more readable (3a0d582)
  • Fix the pixelMarginRight support test in Android 2.3 (cdfc2d0)
  • Don’t expose jQuery.swap (#2058, bb4d888)
  • simplify “defaultDisplay” module (c62486f)
  • Improve a comment explaining IE11 fullscreen bug (8e4aac8)
  • Add an integration test for issue gh-1764 (8887106)
  • Removed redundant “to the number” in comment (895ea68)
  • Remove use of getDefaultComputedStyle (#15227, 274feb5)

Data

  • move element cache to element[expando] (#1734, d702b76)
  • updates to element[expando] cache (222ac3a)
  • shave off a couple of bytes (6f65f5f)
  • restore explicit data removal of private data in cleanData. (#2127, 332fd94)
  • remove user data in cleanData (#2503, 5fe76c6)
  • avoid Object.defineProperties for nodes (#1728, 95fb798)
  • speed up $.fn.data() for camel-cased key (#1941, 72c4a06)
  • find hyphenated data with camelCased key (#2779, c1511c6)
  • avoid non-alphanumeric chars in expando properties (0cdec79)
  • Drop the tests relying on applets (#1938, 95c0a10)
  • Combine register and cache methods (b5f7c9e)
  • avoid using delete on DOM nodes (0e98243)
  • Don’t expose jQuery.acceptData (#2555, 2242719)
  • Use a PDF object instead of a Java applet for acceptData testing (#1938, 087d280)
  • do not create data cache when fetching single property (f5bf9bc)
  • remove the expando when there’s no more data (#1760, 56bb677)
  • remove some unused code (764dc94)

Deferred

  • Fix $.when with resolved deferred and progress callbacks (#1894, ab20d9d)
  • Always handle progress callbacks before done/fail (#2013, #2010, 002240a)

Deprecated

  • fix amd mode for the deprecated module (e271f66)

Dimensions

Docs

  • Fix README uppercase (b50e0f2)
  • remove redundant instruction from the readme (#2359, 3c92770)
  • correct grunt command in README.md (#1850, 9d6beac)
  • 1.x-master branch -> compat branch; 2.x branch -> master branch (758fd6c)
  • Clarify custom build instructions (a3779bc)
  • Add info about Sizzle not being excludable on the compat branch (#2184, 062b526)
  • Fix various spelling mistakes (360a478)
  • “npm run build” was missing from the contributing guides (735dea3)

Effects

  • set default easing using jQuery.easing._default (#2219, 5f2ea40)
  • Remove tests for jQuery.Animation & jQuery.Tween (a5864ae)
  • Improve raf logic (708764f)
  • Finish should call progress (#2283, 3dd3d13)
  • manually revert two `requestAnimationFrame` commits (0a98623)
  • add tests for jQuery.easing._default in Animation and Tween (6d7ef56)
  • Add tests for jQuery.Tween (cdaed15)
  • Adding unit tests for jQuery.Animation (b3b2d6c)
  • Reintroduce use of requestAnimationFrame (#15147, 72119e0)

Event

  • HTML5 drop events inherit from MouseEvent (#2009, d7e5fce)
  • Ensure delegation doesn’t error on comment nodes (#2055, 493b0fd)
  • remove preDispatch hook & simplify “simulate” signature (3655c4e)
  • Copy detail property to jQuery.Event on native events (#1867, d9ed166)
  • Fully clean up events in unit test (4467ed6)
  • Update support comments for mouseenter/mouseleave implementation (2792845)
  • Add a note about a mouseenter bug in Chrome (a5e1c9b)
  • Empty namespaces should be uneventfully ignored (8653068)
  • remove outdated originalEvent hack (6df669f)
  • Remove fake originalEvent from jQuery.Event.simulate (#2300, 7475d5d)
  • Add basic unit tests for event aliases (#2302, e05c63e)
  • Fix delegated radio events when arrow keys are used (#2343, c82a668)
  • Make event aliases optional in unit tests (2cb8eba)
  • provide verbose comment for focus(in | out) & rename support prop (c074006)
  • Move .bind() and .delegate() to deprecated (#2288, ee0854f)
  • Separate trigger/simulate into its own module (#1864, c9935b6)
  • Move VML test out of event alias test (67fa2ea)
  • Remove an internal argument to the on method (04a2969)
  • fix incorrect window bug with scrollTop/Left in iframes (#1945, d21edb5)
  • fix incorrect test (d923100)
  • Restore the `constructor` property on jQuery.Event prototype (#15090, b807aed)
  • Only check elements for delegation matches (9d820fb)
  • remove redundant guards for the event methods (#2047, a873558)
  • add support comment (9db9316)
  • correct support comment (361a0d5)
  • Normalize mouse event properties in drag events (#1925, 97cf528)

Manipulation

Misc

  • Mac OS is now OS X, thanks @xfq (d30c482)
  • Fix the tests, revert some unneeded/broken reverts (1ad9915)
  • Need for speed removed by 9ad6e7e (ff928f5)
  • Update all references to bugs.jquery.com (#1681, 3e89a53)
  • Remove leftover -moz-box-sizing in tests (e81b258)
  • Adjust comments & docs to dropping IE<8 in jQuery Compat (c309b95)

Offset

  • offsetLeft/Top on empty set returns undefined (#2319, 2937019)
  • allow offset setter to throw for disconnected elements (#2114, 0d11c11)
  • allow small differences in offset.top (#2590, 9f9e204)
  • don’t run scrollTop/scrollLeft iframe test in Android 2.3 & 4.0 (#1981, 0c46643)
  • add tests for hidden elements + scroll (b041242)
  • return before getBoundingClientRect to avoid error in IE8-11 (0e4477c)
  • Round offset value for the sake of floating errors (#2147, 62ae2d0)
  • return zeros for disconnected/hidden elements (#2310, 40dcc76)
  • Simplified a conditional (4287442)
  • account for scroll when calculating position (#1708, 2d71594)
  • don’t run scrollTop/scrollLeft iframe test in mobile Safari (4ab8603)
  • simplify jQuery#offsetParent method (74ae544)
  • do not run tests which break without back-incompat change (9d1d4c2)

Readme

  • Fix minor style issues. Thanks @MightyBranch! (edfc94d)
  • Fix punctuation in tile (df62159)

README

  • Improve build instructions (2e9c1ea)
  • Update the description of the deprecated module (1d75273)
  • various text fixes (31b63fc)
  • Add selector-native.js link. Thanks @randsonjs! (cfe2eae)
  • update the Homebrew site address (b410b15)

Release

  • bower.json is actually generated from scratch (61224f5)
  • update AUTHORS.txt (ae3229c)
  • Distribute files to distribution repo (#1869, #1673, #2045, 26eca14)
  • remove antiquated release-notes.js (7bb39f3)
  • properly set the dist remote when it’s a real release (c44dd77)
  • remove revert artefacts (3655260)
  • update AUTHORS.txt (e905dcd)
  • fix revert artefacts (e2af987)
  • allow local and github dists (47c21ef)
  • ensure files are copied to dist (b4e139c)
  • Remove copying of jquery-latest files (c34ed46)
  • remove revert artefacts (c69673f)
  • push dist to same remote as project (1ba45fc)
  • fix revert artefacts (ae88b39)
  • remove sourcemap comment from all copies of minified file (#1707, a76c781)
  • fix CDN archive creation (#1940, e0673df)
  • dist can be run during a test (aae998b)

Selector

  • pass jQuery unit tests with selector-native (#1742, #2048, 8804644)
  • Remove “#” exception for identifier tokens (86e62d8)
  • Define jQuery.uniqueSort in selector-native too (#2466, bf591fb)
  • add test for jQuery.unique() alias (add85af)
  • add jQuery.uniqueSort; deprecate jQuery.unique (#2228, e1090c3)

Serialize

  • Handle arrays with null values (3d7ce0a)
  • Fix object detection (14c0fe4)

Sizzle

Support

  • Re-organize browser order, add Safari 8 (43faf6d)
  • Correct iOS 8 support test results, re-arrange entries (ce308e2)

Tests

  • Post-Summit cleanup (f931786)
  • Use standard external domain name (5b554cf)
  • Make basic tests work in IE 8 (5914b10)
  • Don’t load non-basic tests when basic module is selected (855b0c8)
  • Add simple tests for Android 2.3 (#2505, 2c7e9c9)
  • Lower the checks rounding error (a44cfa0)
  • Use QUnit URL parameter parsing (f23a64d)
  • more style corrections (c161eec)
  • Disable/relax a few tests failing in Android 2.3 (#1785, 1a9c9b0)
  • further improvements QUnit 2.0 migration (c8d15a2)
  • fix tests in accordance with new :visible behavior (16713fb)
  • hotfix for c1511c673148208ab17cafa0faf37bce3b4ae392 (3f839af)
  • lower the PHP sleep time in unreleasedXHR.html (02e1008)
  • Fix support tests results for Android 2.3 (4fea389)
  • Add Safari 9 support tests results (e99a3ac)
  • Add dummy modules when running basic tests (f9af896)
  • Blacklist the iframe scrollTop test in Opera 12.1x (283a194)
  • do not define two modules with the same name (#2437, 7aa46e0)
  • partially use new qunit interface (#2540, b930d14)
  • Correct a typo in the regex matching Safari 8 (c17543f)
  • Change quotes according to style guidelines (c577928)
  • fix lint in restored test (636a2bd)
  • Remove a trailing comma for compatibility with the compat branch (dc8ba6a)
  • make editorconfig match css style (1da1448)
  • make top of the HTML suite compliant with style guide (8356281)
  • Accept Android 2.3 doesn’t fire window.onerror for remote scripts (2732531)
  • Add Microsoft Edge results (from Windows 10 build 10130) (8e111df)
  • Keep test iframes around for assertions (0fb84fa)
  • Account for array-like objects in jQuery.grep (67b76f5)
  • fix code style issues (625bd30)
  • Fix support tests results (f6dd767)
  • Account for Edge in originalEvent UA-sniffs (#2357, 64fd7ef)
  • Remove Safari 7.0 & iOS 6 support tests results (47e2aa6)
  • Remove Edge version from the user agent (5a1217e)
  • Tilt at a few style guide windmills (906caeb)
  • Accommodate page changes from the QUnit HTML reporter (3c13f4c)
  • Remove test/data/ua.txt (#2398, e831856)
  • Minor updates for QUnit 1.16 compatibility (26276a3)
  • Update QUnit (6748ba3)
  • Add iOS 9 support tests results (1c2b536)
  • Fix CSS relative adjustment test for round-down browsers (48be675)
  • Increase QUnit timeout (ff18d8e)
  • Expand CSS relative adjustment tolerance for IE (e22ef5d)
  • don’t use deprecated argument in test declaration (aabe94e)
  • Provide equal() arguments in correct order (actual, expected) (d3d8d97)
  • Docs: Fix various typos (03eaadb)
  • add the current version of node and iojs to the travis config (bd9a138)
  • Make regexes for iOS devices more rigid (015d16c)
  • Add .extend test for defined accessor properties (9748e43)
  • Fix Safari 5.1 support tests results (e904249)
  • Really fix tests in IE 8 this time (1b566d3)

Traversing

  • Don’t expose jQuery.dir & jQuery.sibling (#2512, f9ef427)

1.12.0

Ajax

  • Add support comment and fix code style issue (e38a94a)
  • remove event dependency from the ajax module (c580a52)
  • Fix for request aborted in ajaxSend (#1775, 73c1cea)
  • Fix cross-domain detection test for non-default port (b635ee2)
  • $.post and $.get can now take an options object (#1986, 26150f0)
  • Run the PATCH test only in IE8 on TestSwarm (#1994, 2524da0)
  • make jQuery#load “type” field explicit (1d3d2b1)
  • replace “jqXHR.complete” callback with “always” (fd80f59)
  • move explanatory comment to appropriate place (04fc801)
  • remove use of jQuery#each second argument (0877733)
  • Use the native XHR for all non-local requests in IE9+ (#1684, 61f812b)
  • Rename Spartan to Edge in a comment (8d88cd5)
  • Fix the XHR fallback logic for IE8 (bd699cb)
  • Remove jsonp callbacks through “jQuery#removeProp” method (#2323, 3d850ed)
  • Account for Android 2.3 not firing window.onerror on script errors (b3eb2a1)
  • do not quote “throws” option – use dot notation instead (#2571, c530661)
  • Mitigate possible XSS vulnerability (#2432, f60729f)
  • correct indentation (2a83417)
  • improve content-type detection (#2584, 3ced5ab)
  • don’t expect cross-origin tests run in envs which not support it (905ab09)
  • Catch synchronous readystatechange events (#2673, 0a6e1c4)
  • Don’t let onreadystatechange preempt exceptions from xhr.send (b5c6fc7)

Attributes

  • fix IE6-7 classes (9e2f55f)
  • don’t test SVG CSS-class manipulation in IE8 (57fb2dc)
  • remove unnecessary element null check (0de798d)
  • fix IE8 issues (f2bcf87)
  • revert returning null for non-existant attributes (7bce5b0)
  • remove flakey test for selected attribute (689270e)
  • fix tabIndex on in IE11 (#2647, cf4092e)
  • revert returning null for non-elements (a403655)
  • add SVG class manipulation (#2199, b5b0d72)
  • removeClass() -> attr(“class”, “”) (f5328b6)
  • Use simpler boolean check vs a function call (c003cd6)
  • fix failing test for new return value (17bd6e9)
  • return null when attribute does not exist (#2118, afca031)
  • Simplify the option val hook; backport a test from master (#1902, aec41a5)
  • fix toggleClass(boolean) in ie6/7 (41c83f5)

Authors

  • Update AUTHORS.txt and .mailmap (d39fef8)

Build

  • update grunt-jscs-checker and pass with the new rules (91e06e9)
  • update source map options for the new grunt jshint (181b451)
  • update requirejs dependency to 2.1.17 (#2290, a9296df)
  • denote that sizzle cannot be removed on this branch (#14775, 764f364)
  • Rearrange grunt/npm tasks into a build/dist/test pattern (0771973)
  • Update the license attribute (#2331, 8bf81d7)
  • append “+compat” to tag version and jQuery.fn.jquery (#2269, d18b645)
  • remove bower.json lint target (24a6bb9)
  • Update grunt-contrib-jshint (a022da7)
  • Remove npm from dependencies (a16b77f)
  • Temprary disable jscs checks (0e3fa47)
  • code style fixes (8c507df)
  • Upgrade to commitplease 2.0.0 (630a5a8)
  • remove needless file and re-enable jscs (813b7e4)
  • update Sizzle (#2042, #1969, 345c95a)
  • 1.x-master -> compat (2912ddd)
  • Put “jQuery Compat” in banners in built files (8cd6875)
  • Update license (9dfb9af)
  • Point to files from the compat branch, not master (b7663ea)
  • Fix various typos (3f9fda8)
  • remove node .10 from travis (498fd24)
  • Update native-promise-only (again) (f9f4f9d)
  • Test on Node 5 (06840d8)
  • code style fixes after all those reverts (14eba98)
  • ignore test dependencies for npm install (ae7a15b)
  • Update commitplease dev dependency (a96ed7e)
  • update AUTHORS.txt (799332f)
  • Upgrade to grunt-bowercopy 1.0.0 (5150442)
  • add mailmap entry (1682d36)
  • just tack on +compat to versions that may include labels (8565f54)
  • Remove unused Sizzle test files (62f7f7b)
  • Move all external libraries to external directory (72e6192)
  • update Sizzle to 1.11.1 and include license (1c31384)
  • update grunt-bowercopy (b3edc61)
  • Add “timers_ie.js” file back to the repo (31e6697)
  • Correct indentation issue (d0f27a7)
  • Add a comment explaining why the es3 option is needed (b988c0e)
  • Remove empty define({}) from build output (#1768, 2138f15)
  • bower.json: remove moot `version` field (3699ef4)
  • update Sizzle to 2.2.1 (#2390, 20cd343)
  • drop bower; use npm for front-end deps (#15186, 79c0732)
  • correct jscs paths (fa8a5a9)
  • Update jscs and lint files (#2056, 20ddbe4)
  • Add “deprecated” to the Testswarm module list (b94af72)
  • remove deprecated JSHint options (9edd95f)
  • fix broken assertions caused by QUnit update (98c77c1)
  • space between curly and paren is optional (#2399, cbb0be6)
  • update front-end dependencies (4089c7d)
  • fix tests in AMD mode (57652ee)
  • Update grunt-contrib-uglify because of a security issue in uglify (2da0cca)
  • Update QUnit to latest (1.17.1) (db31206)
  • another portion of code style fixes (f913a01)
  • update node dependencies barring jscs (511eb15)
  • account for version labels in Sizzle versions (#1939, ac70dd0)
  • update node dependencies (dda65fb)
  • Fixed issue with base path that contain ‘var’ (#2450, 4e3f971)
  • Sizzle version labels must start with a dash (6bc0e50)
  • Fix an email address of a contributor (648280a)
  • Speed up the Travis build (ba352e8)
  • Don’t install jsdom 3 on Node.js 0.10 & 0.12 by default (#2519, 5f1c7fc)
  • Sanctify the component name status of Wrap (abfb10c)
  • Remove dates from copyright notice (a0bf5bf)
  • Specify valid components for commit messages (6f0db53)
  • Remove a double empty line at the end of .travis.yml (fc87a5c)
  • Use double quotes in .travis.yml (ca0dd7a)
  • Drop io.js testing, test on latest Node.js (d29c394)
  • Move test to appropriate module (9953ae4)
  • Update native-promise-only (7b11131)

Callbacks

CONTRIBUTING

  • Condense info and add directions to other resources (#1824, 404d2aa)

Core

  • Consistently use local reference to access() (eeab75d)
  • add support to tag-hyphenated elements (f19595c)
  • Remove unnecessary parameter to jQuery#constructor (dc76dca)
  • Support Symbol wrapper objects in jQuery.type (c7cf286)
  • simplify “each” stylesheet iteration test (889bb1e)
  • add unit test for isPlainObject(Symbol) (#2645, d3a2fdc)
  • introduce createHTMLDocument in parseHTML; Safari 8/IE8 left out (828a718)
  • change jQuery.each and jQuery#each signatures (#2090, 7cd9a36)
  • remove isArraylike check for nodes (#2238, d693391)
  • Simplify and speed up .each (4cc4e54)
  • Support non-browser environments (#2133, #2501, 04ec688)
  • CSS: Attach test nodes to documentElement, not body (#2502, 9b04201)
  • make isNumeric test work on Symbol (d846c25)
  • Don’t expose jQuery.access (#2513, 12230d3)
  • Adjust comments & tests after dropping Safari 6 support (5fce498)
  • .each/.map should accept an undefined/null value (#2267, 15f4804)
  • Add a support comment for Safari 8 (9c373c3)
  • Make jQuery objects iterable (#1693, 2fa3bac)
  • Align code in intro.js with master (fe2a584)
  • Update tested jsdom, drop obsolete workarounds (#2153, 19c0377)
  • Standardize indexOf comparisons (6ae222a)
  • Drop strundefined variable (835e8c4)
  • organize prop & attr code to be similar (d0388e9)
  • Change support.ownLast to support.ownFirst (#2406, 453738a)
  • Follow the AMD specification for define (acf2d0c)
  • add workaround for iOS JIT error in isArrayLike (#2145, 1e7a2f3)
  • CSS:Event: simplification of native method signatures (49bce47)
  • allow init to accept an alternate rootjQuery for migrate’s sake (#2101, c916aef)

Css

  • Fix the “sanity check” test (da84cb6)
  • Remove non-functional unit test for negative margin (1ece10f)

CSS

  • Add a support test for the hack for .css(‘marginRight’) etc. (25bc680)
  • fix :visible/:hidden selectors for inline element w/ content (#2227, dd816db)
  • fix AMD mode for the new showHide module (0b6846c)
  • fix visible/hidden for IE6/7 (ecf52b9)
  • use isFinite in place of redundant isNumeric (24ab836)
  • Protect against getBoundingClientRect exceptions (c40b12a)
  • elements are hidden when either offsetWidth or offsetHeight is zero (#10406, #13132, 7b9b98d)
  • Add an integration test for issue gh-1764 (7ee0fea)
  • Don’t name the anonymous swap function (e847574)
  • Fix the pixelMarginRight support test in IE8 (4a67512)
  • Improve a comment explaining IE11 fullscreen bug (5895340)
  • Removed redundant “to the number” in comment (b59b819)
  • Fix get upper case alpha opacity in IE8 (#1705, c5e8e12)
  • Support relative adjustment in any applicable unit (#1711, 6fb2cef)
  • make the getStyles function more readable (bf282ea)
  • Add animation-iteration-count to cssNumber, fix tests (#2792, 01fb17b)
  • Work around an IE11 fullscreen dimensions bug (#1764, 6df1bf9)
  • remove revert artefact (fc6ac9d)
  • Don’t expose jQuery.swap (#2058, 02a9d9f)
  • Correct typo in the comment (787ffbf)
  • Remove use of getDefaultComputedStyle (44c9c4f)
  • Don’t cache unrecognized CSS property names (#2015, 42ea746)
  • Correct misrepresentation of “auto” horizontal margins as 0 (#2237, 214e163)
  • fix reliableHiddenOffsets support test for IE6-7 (77f9b1e)
  • fix dependency order for amd (e185aa3)
  • Use pre-defined displays for html and body (b05b6a2)
  • Add unit tests for negative margins and positioning (ae30fb6)
  • Clean up memory leak in reliableMarginRight (#1795, fa70df6)

Data

  • Use a PDF object instead of a Java applet for acceptData testing (#1938, 4e3c48f)
  • Don’t expose jQuery.acceptData (#2555, bec2ba2)
  • use removeAttribute in cleanData to bypass Chrome bug (#1664, 9d1d90e)
  • backport cleanData tests from gh-2480 (624d6a8)
  • test that delete is not used on DOM nodes (5a7674d)

Deferred

  • pass lint in new catch tests (203979d)
  • Always handle progress callbacks before done/fail (#2013, #2010, 35295f1)
  • Fix $.when with resolved deferred and progress callbacks (efb98f8)

Deprecated

  • fix amd mode for the deprecated module (bd11778)

Dimensions

  • allow modification of coordinates argument (1eedf0e)

Docs

  • Rename 1.x to compat (8992ac8)
  • remove redundant instruction from the readme (#2359, e6a492d)
  • correct grunt command in README.md (38ac3c4)
  • Clarify custom build instructions (8e738f0)
  • Fix various spelling mistakes (6af92ca)
  • 1.x-master branch -> compat branch; 2.x branch -> master branch (b8a0843)
  • “npm run build” was missing from the contributing guides (5da5035)

Effects

  • Finish should call progress (#2283, f71e32d)
  • Add tests for jQuery.Tween (6b10f9d)
  • Remove tests for jQuery.Animation & jQuery.Tween (bc53033)
  • add tests for jQuery.easing._default in Animation and Tween (b9b5c23)
  • set default easing using jQuery.easing._default (#2219, b7f9e62)
  • Remove needless operations in tests (13040b6)
  • add back support.shrinkWrapBlocks() for ie6 (1f85ded)
  • fix failing tests in IE8 (fe6afa8)
  • Fix tests (29561bc)
  • Adding unit tests for jQuery.Animation (0ff8057)

Event

  • Use form prop so that a propHook can be used (#2332, ead83b9)
  • improve originalEvent hack (37c3d08)
  • Remove an internal argument to the on method (473d2db)
  • Empty namespaces should be uneventfully ignored (51564bb)
  • fix incorrect test (e73a67f)
  • add test for window scrollTop/Left logic in iframes (2c14b00)
  • Move .bind() and .delegate() to deprecated (#2288, 7e78c2e)
  • Add reference to data module (2866da9)
  • Normalize mouse event properties in drag events (#1925, 5b0b1b7)
  • HTML5 drop events inherit from MouseEvent (#2009, a05de40)
  • Add a note about a mouseenter bug in Chrome (f3e3a20)
  • provide verbose info for focus(in | out) & rename support props (401a351)
  • Restore the `constructor` property on jQuery.Event prototype (#15090, d4a998f)
  • correct support comment (fae2daa)
  • Reduce differences from master (3923bb8)
  • remove preDispatch hook & simplify “simulate” signature (05e54ce)
  • add support comment (0fc5beb)
  • Reduce differences from master (e4c5f87)
  • Update support comments for mouseenter/mouseleave implementation (d176001)
  • Copy detail property to jQuery.Event on native events (#1867, a90ff8c)
  • correct an unfinished comment (ac23f91)
  • Fix delegated radio events when arrow keys are used (#2343, 657c2f8)
  • Fully clean up events in unit test (ef93f95)

Manipulation

  • re-expose domManip until 3.0 (#2225, 95de105)
  • increase delay of data-URI test (30ace26)
  • support data-URI scripts insertion (bc1902d)
  • don’t test data-URI with script element in IE8 (503e545)
  • Detect sneaky no-content replaceWith input (#2204, 4cafb58)
  • privatize internal domManip() function (#2225, 590eff6)
  • Plug an IE8 memory leak in noCloneEvent feature detect (#1840, faf295a)
  • Make an HTML interception point (#1747, fb25bac)
  • privatize buildFragment() function (#2224, 63c1414)
  • improve test for data-URI (a467f86)
  • Update html5shiv elements (#15241, a953389)
  • correct wrapMap assign (a5be90f)
  • Remove an internal argument to the remove method (#2301, b819be3)
  • Don’t provide the parser with sloppy table markup (#2493, 81b6e46)
  • Switch rnoInnerhtml to a version more performant in IE (#2563, 29266e0)
  • add support to tag-hyphenated elements (5d522f5)
  • blacklist IE8 from running tests for tag-hyphenated elems (87bb713)

Misc

  • Mac OS is now OS X, thanks @xfq (598946d)
  • Need for speed removed by 9ad6e7e (519d99a)
  • Update all references to bugs.jquery.com (#1681, 49c720e)

Offset

  • return before getBoundingClientRect to avoid error in IE8-11 (25e8620)
  • fix iframe scrollTop/Left test for IE8 (d632699)
  • fix iframe scrollTop/Left test for IE8 and iPhone (62a333e)
  • Round offset value for the sake of floating errors (#2147, cd63e9c)
  • don’t run scrollTop/scrollLeft iframe test in Android 2.3 & 4.0 (#1981, f2ea60c)
  • return zeros for disconnected/hidden elements (#2310, 63f19a9)
  • account for scroll when calculating position (#1708, 0654711)
  • do not run tests which break without back-incompat change (9f2dcb9)
  • getBounding doesn’t return width/height in IE8. Fixes test. (3b1de11)
  • no need to check for ownerDocument (523de77)
  • revert to jQuery.contains for IE8’s sake (compat only) (6df3990)
  • allow small differences in offset.top (#2590, d047073)
  • add tests for hidden elements + scroll (a0a5c0b)

Readme

  • Fix punctuation in tile (a751bfe)

README

  • various text fixes (3d77c2e)
  • update the Homebrew site address (d588c85)
  • Improve build instructions (07afc28)
  • Update the description of the deprecated module (2a3018c)

Release

  • ensure files are copied to dist (f5029f5)
  • fix CDN archive creation (#1940, 7352216)
  • remove sourcemap comment from all copies of minified file (#1707, f71d7f5)
  • push dist to same remote as project (5e5489c)
  • Distribute files to distribution repo (#1869, #1673, #2045, fc76a97)
  • update AUTHORS.txt (ce4822c)
  • compat -> 1.x. Remove compat-specific release semantics (25d0afa)
  • update AUTHORS.txt (8b0618c)
  • update AUTHORS.txt again (0398d90)
  • properly set the dist remote when it’s a real release (9162122)
  • Remove copying of jquery-latest files (16fcc5e)
  • dist can be run during a test (dcd2c8f)
  • allow local and github dists (3a4a95c)

Selector

  • add test for jQuery.unique() alias (17ce9ed)
  • Remove “#” exception for identifier tokens (41f522a)
  • add jQuery.uniqueSort; deprecate jQuery.unique (#2228, d9d930f)

Serialize

  • Handle arrays with null values (f0b86ec)
  • Fix object detection (a993056)

Sizzle

Support

  • Correct iOS 8 support test results, re-arrange entries (a4e31a8)
  • Re-organize browser order, add Safari 8 (7e70867)

Test

  • Switch leftover andSelf to addBack (2ea57c1)

Tests

  • Expand CSS relative adjustment tolerance for IE (9d255b3)
  • Post-Summit cleanup (a93d1d7)
  • Add iOS 9 support tests results (dec9ab9)
  • Remove Safari 7.0 & iOS 6 support tests results (602c34d)
  • Make regexes for iOS devices more rigid (8339185)
  • Do not define two modules with the same name (#2437, 85aed35)
  • lower the PHP sleep time in unreleasedXHR.html (eac265c)
  • Add dummy modules when running basic tests (5fb689d)
  • fix code style issues (8cac6da)
  • Account for array-like objects in jQuery.grep (6e466af)
  • Docs: Fix various typos (ef6cd83)
  • fix support tests in ie9 (729c75f)
  • Account for Edge in originalEvent UA-sniffs (#2357, 4c3e63b)
  • Fix the expando-removal test failure in IE 8 (#2596, 4b1cff6)
  • make top of the HTML suite compliant with style guide (bc9e573)
  • Add Safari 9 support tests results (99f41c2)
  • Provide equal() arguments in correct order (actual, expected) (4503a61)
  • do not create data cache when fetching single property (0874096)
  • Increase QUnit timeout (c0a0777)
  • Really fix tests in IE 8 this time (1b48eef)
  • Disable/relax a few tests failing in Android 2.3 (#1785, 704de81)
  • add the current version of node and iojs to the travis config (dd2e027)
  • Use QUnit URL parameter parsing (fb98ea4)
  • fix support values for android (d224acb)
  • Use standard external domain name (3680689)
  • Partially use new qunit interface (#2540, 4543815)
  • Remove test/data/ua.txt (#2398, d8037c6)
  • Lower the checks rounding error (1390d07)
  • use assert syntax in restored test (56b9656)
  • don’t use deprecated argument in test declaration (b8b111e)
  • Tilt at a few style guide windmills (4365133)
  • Make basic tests work in IE 8 (f709a28)
  • Remove Edge version from the user agent (1d052bd)
  • Don’t load non-basic tests when basic module is selected (06454d1)
  • Minor updates for QUnit 1.16 compatibility (f6f8848)
  • Update QUnit (b6e31a8)
  • Fix merge conflict (d07774a)
  • Backport basic tests from master (#2505, c7d458f)
  • Keep test iframes around for assertions (06128a9)
  • Restore IE8 workarounds (Sinon timers for IE & HTML5 shiv) (0b07c65)
  • correct revert artefact (b85f32f)
  • Add .extend test for defined accessor properties (15f7920)
  • further improvements QUnit 2.0 migration (2f0cedc)
  • Correct a typo in the regex matching Safari 8 (ef332c7)
  • more style corrections (d8b7e7b)
  • Change quotes according to style guidelines (52491ae)
  • Fix CSS relative adjustment test for round-down browsers (4a8000b)
  • Add Microsoft Edge results (from Windows 10 build 10130) (546593b)
  • fix tests in accordance with new :visible behavior (cbd51c5)
  • Accommodate page changes from the QUnit HTML reporter (b747537)

Traversing

  • Don’t expose jQuery.dir & jQuery.sibling (#2512, 8c851bf)

Wrap

jQuery Foundation Web Excellence Program – Powered by jQuery

Posted on by

Snowball: A Tool for Storytelling on the Web

Drexel_Vertical stacked_Lockup_HEX
openHTML Research Group

Tell us about your organization

Our openHTML group at Drexel University in Philadelphia, PA researches how people learn about computation through the web, and ways we can design tools to support these learning experiences. Snowball is our latest project for giving people a way to express themselves using the web as a medium.

What is Snowball and how does it help advance the Open Web?null

Snowball is a WordPress plugin that makes it possible for anyone to create modern, immersive, interactive articles to tell their stories on the web. Our goal is to make it possible for everyone including bloggers, students, and journalists to create engaging articles like the ones produced by world-class news organizations.

We provide a graphical interface where you can start building the content of your article block by block. Within each block, you can tinker with the widgets to add your own content and style. Each block also has a coding interface so you can inspect the underlying HTML and CSS, and add a dash of your own to customize even further. We provide blocks ranging from third-party media embeds to interactive visualizations.

What are the benefits of including jQuery as a dependency in Snowball?

jQuery ensures that we can provide a uniform experience across a broad range of devices and platforms, freeing our time to spend on what makes our project unique.

How do jQuery projects help Snowball and its users achieve your and their goals?

jQuery has accelerated the pace of our development, allowing us to build a functional prototype in less than two months. In turn, this has allowed us to start getting feedback, and iterating on our design, sooner rather than later.

snowball2

What’s coming next in Snowball?

We’re partnering with The Triangle, Drexel University’s student-run newspaper, to pilot Snowball for long-form articles. This will teach us a great deal about how journalists work the web and how we can make our tool more useful for them. We’re also in the process of getting Snowball listed on WordPress.org’s plugin directory so that it’s available to everyone.

How can people get involved?

If any news organization or educators are interested in trying Snowball, we’d love to partner with you. We’re also open source and on GitHub. If you know HTML, CSS, and jQuery, you know enough to contribute new block types in Snowball!

Are you involved with an amazing site or app that uses a jQuery Foundation project or projects? Check out the Web Excellence Program categories and submit yours today! Entries in all categories are heartily welcomed, and we’d love to hear how individual developers all the way to Enterprises use jQuery Foundation projects to achieve their business and technology goals.

jQuery Foundation Project Updates

Posted on by

In order to make it easier for jQuery Foundation Members and Web developers to quickly stay abreast of all our projects, we will periodically publish consolidated project updates here.

jQuery Core

Powering 2/3 of sites, jQuery is a fast, small, and feature-rich JavaScript library

Since last December’s release, the team has been hard at work on a major 3.0 release. This release – the alpha of which came out on July 8 – comes with many updates (including Promises/A+ compliant Deferreds) and bug fixes, and it finally removes some previously deprecated and underused features.

Links: download, meeting notes, full list of 3.0 changes

A big thank you to the core team and everyone who contributed – and will contribute – to the upcoming release.
Questions?  Contact Timmy Willison

globalize-mark-light (1) Globalize

JavaScript library for internationalization and localization that leverages the official Unicode CLDR JSON data.

Globalize version 1.0 was released in April and provides developers with localized number formatting and parsing, date and time formatting and parsing, relative time formatting, currency formatting, and message formatting (with pluralization and gender support) that runs in browsers and Node.js, consistently across all of them.

One exciting thing the community is focused on is the ability to compile Globalize for production. This will enable applications to generate custom runtime code that is extremely small and fast.

Links: git, mailing list,
Questions?  Contact Rafael Xavier de Souza

icn-jquerymobile-logo jQuery Mobile

Unified, HTML5-based user interface system for all popular mobile device platforms, built on the jQuery and jQuery UI foundation

The team has been heads down on version 1.5.0, which will bring numerous improvements including:

  • A new standalone enhancer module for customizable, fast declarative initialization of any javascript including jQuery widgets and plugins.
  • Improved and re-written shared with jQuery UI including button, checkboxradio, and controlgroup and the accordion widget which will replace the current collapsible and collapsible set widgets.
  • All of jQuery Mobile’s widget will now also feature the classes option for improved customizability and theming.
  • Re-written table and navbar widgets
  • Greatly improved modularity

Check out full release plans here

Links: download, meeting notes

Questions?  Contact Alexander Schmitz

Esprima

High performance, standard-compliant ECMAScript parser written in JavaScript

In March, we released Esprima 2.1.0, introducing support for several new pieces of ES6 syntax. In the mean time, a lot of work has been done to complete its ES6 support (check the roadmap). We’ve also improved the testing infrastructure and workflow to make the codebase more contributor-friendly.

Links: git, mailing list

A big thank you to all those who contributed patches to this release: Ariya Hidayat, Bei Zhang, Brandon Mills, Mike Rennie, Mike Sherov.

Questions?  Contact Ariya Hidayat

icn-ui-logo jQuery UI

Curated set of UI interactions, effects, widgets, and themes built on top of the jQuery Library.

The team released jQuery UI 1.11.4 in March, bringing bug fixes for Draggable, Resizable, Sortable, Accordion, Dialog, Slider, and Tooltip.

We are focused now on support for Pointer Events, and splitting up UI Core and old jQuery support to enable smaller builds

Links: git, meeting notes
Questions? Contact Scott González

ChassisChassis

Creating open standards for CSS libraries, JavaScript UI libraries, and web developers in general.

The team is working on its Phase One release which will involve an initial CSS Framework – this is planned for later this summer.

Work is also underway for a themeroller.

Links: git, meeting notes

Thanks to Micheal Arestad, Alexander Schmitz and Rohit Mulange

Questions?  Contact Sarah Frisk

qunitQUnit

Powerful, easy-to-use JavaScript unit testing framework

The latest release, 1.18.0, made a lot of improvements to the HTML reporter, making it more efficient to debug failures. For example, a new diff algorithm makes it easier to spot the difference in failed expected/actual assertions.

We’re currently working on the js-reporters project, which QUnit will implement, along with hopefully many other JavaScript testing frameworks and tools. The goal is to standardize an API with events and event data for test runners. A tool like Karma could then adopt a single interface instead of having to support each testing tool individually.

If you want to help moving QUnit along, check out these issues.

Links: git, meeting notes

Questions?  Contact Jörn Zaefferer

PEP

PointerEvents Polyfill: a unified event system for the web platform

PEP’s First release (0.3.0) came out in April and the the project is presently working to automate and improve the W3C test suite.

Links: git, meeting notes,

Questions?  Contact Scott González

jQuery 3.0 and jQuery Compat 3.0 Alpha Versions Released

Posted on by

It’s been a long time since we did a major release, and you certainly deserve one. So we’re glad to announce the first alpha of jQuery 3.0!

Despite the 3.0 version number, we anticipate that these releases shouldn’t be too much trouble when it comes to upgrading existing code. Yes, there are a few breaking changes that justified the major version bump, but we’re hopeful these breakages don’t actually affect that many people. The jQuery Migrate plugin can help you to identify compatibility issues in your code as well. Your feedback on the changes in this alpha will help us greatly, so please try it out on your existing code and plugins!

There are actually two releases here. First is jQuery 3.0, which supports modern browsers and environments from IE9 forward. Second is jQuery Compat 3.0, which includes support for IE8. As an added bonus, both jQuery and jQuery Compat will include support for Yandex.Browser, a freeware browser released in 2012. You can get the files from the jQuery CDN, or link to them directly:

https://code.jquery.com/jquery-3.0.0-alpha1.js

https://code.jquery.com/jquery-compat-3.0.0-alpha1.js

You can also get the alpha versions from npm:

npm install jquery@3.0.0-alpha1

npm install jquery-compat@3.0.0-alpha1

 

Major changes

Below are just the highlights of the major new features, improvements, and bug fixes in these releases. A complete list of changes is available at the bottom of this post and on our GitHub issue tracker. On GitHub, you can additionally see the features we expect to put in later beta and final versions that have yet to land.

Simplified .show() and .hide() methods

Everyone’s mental model of jQuery’s .hide() method is that it sets display: none in CSS. Conversely, .show() clears the display so that the element shows again (assuming its parents are not hidden). Simple, right?

Well, no. There are actually many complex special cases that people asked us to “fix” over the years, which turned these methods into a convoluted confluence of principles. For example, what if the element is set to display: none in a stylesheet? jQuery would try to override that by forcing display: block on the element directly. Okay, but what if a normally block element like <li> was set to display: inline by a different stylesheet rule? How about the case where you call these methods on an element before it’s been added to the document and we don’t know what display value it will have? Determining all of that takes extra work. Sometimes it’s still just a guess that turns out to be wrong.

Since these methods add a style attribute to the element, they don’t tend to play well with techniques like responsive design where the visibility of elements may also be set by media queries. This leads to the need for jQuery handlers that listen for the orientationchange or resize events and manually hide or show parts of the page; it defeats the elegant solution that media queries were trying to implement.

You can see that jQuery was already about halfway down the path to total madness, and it didn’t make sense to complete the journey. The special cases and checks were not only complex and incomplete, but they caused significant performance issues on large pages.

So, instead, we’re experimentally defying the evolution of these methods and reverting to a simple, primordial model. This will break some code. If you have elements in a stylesheet that are set to display: none, the .show() method will no longer override that. So the most important rule for moving to jQuery 3.0 is this: Don’t use a stylesheet to set the default of display: none and then try to use .show() – or any method that shows elements, such as .slideDown() and .fadeIn() – to make it visible.

If you need an element to be hidden by default, the best way is to add a class name like “hidden” to the element and define that class to be display: none in a stylesheet. Then you can add or remove that class using jQuery’s .addClass() and .removeClass() methods to control visibility. Alternately, you can have a .ready() handler call .hide() on the elements before they are displayed on the page. Or, if you really must retain the stylesheet default, you can use .css("display", "block") (or the appropriate display value) to override the stylesheet.

We know that this is likely to be one of the most contentious and difficult changes in jQuery 3.0, so we wanted to put it out in this early release to see the effects. Please let us know how it affects your code and what you need to change in order to work with this new model.

https://github.com/jquery/jquery/issues/1767
https://github.com/jquery/jquery/issues/2057
https://github.com/jquery/jquery/issues/2308

Special case with .data() names

We have updated our .data() implementation to closer match the HTML5 dataset specification. All keys are now converted from kebab-case to camelCase, regardless of access method, and digits no longer participate in the conversion. For example, we will no longer differentiate between “foo-bar” and “fooBar”, but will differentiate between “foo-42” and “foo42”. These changes will mainly come into play when retrieving all data by calling .data() with no arguments, or when trying to access the data using a converted key (.data(“foo42”)) instead of the original (.data(“foo-42”)).

https://github.com/jquery/jquery/issues/1751

jQuery.Deferred is now Promises/A+ compatible

jQuery.Deferred objects have been updated for compatibility with Promises/A+ and ES2015 Promises, verified with the Promises/A+ Compliance Test Suite. This meant the introduction of a .catch() method and some major changes to the .then() method:

  • An exception thrown in a .then() callback now becomes a rejection value. Previously, exceptions bubbled all the way up, aborting callback execution and irreversibly locking both the parent and child Deferred objects.
  • The resolution state of a Deferred created by .then() is now controlled by its callbacks—exceptions become rejection values and non-thenable returns become fulfillment values. Previously, returns from rejection handlers became rejection values.
  • Callbacks are always invoked asynchronously. Previously, they would be called immediately upon binding or resolution, whichever came last.
  • Progress callbacks can no longer resolve Deferred objects to which they are bound.

Consider the following, in which a parent Deferred is rejected and a child callback generates an exception:

var parent = jQuery.Deferred();
var child = parent.then( null, function() {
  return "bar";
});
var callback = function( state ) {
  return function( value ) {
    console.log( state, value );
    throw new Error( "baz" );
  };
};
var grandchildren = [
  child.then( callback( "fulfilled" ), callback( "rejected" ) ),
  child.then( callback( "fulfilled" ), callback( "rejected" ) )
];
parent.reject( "foo" );
console.log( "parent resolved" );

As of jQuery 3.0, this will log “parent resolved” before invoking any callback, each child callback will then log “fulfilled bar”, and the grandchildren will be rejected with Error “baz”. In previous versions, this would log “rejected bar” (the child Deferred having been rejected instead of fulfilled) once and then immediately terminate with uncaught Error “baz” (“parent resolved” not being logged and the grandchildren remaining unresolved).

While caught exceptions had advantages for in-browser debugging, it is far more declarative (i.e. explicit) to handle them with rejection callbacks. Keep in mind that this places the responsibility on you to always add at least one rejection callback when working with promises. Otherwise, any errors will go unnoticed.

Legacy behavior can be recovered by replacing use of .then() with the now-deprecated .pipe() method (which has an identical signature).

jQuery.when has also been updated to accept any thenable object, which includes native Promise objects.

https://github.com/jquery/jquery/issues/1722
https://github.com/jquery/jquery/issues/2102

Removed special-case Deferred methods in jQuery.ajax

jqXHR object is a Promise, but also has extra methods like .abort() so that you can stop a request after it has been made.

As users increasingly embrace the Promise pattern for asynchronous work like AJAX, the idea of having special cases for the Promise returned by jQuery.ajax is an increasingly bad idea.

success, error, complete
done, fail, always

Note that this does not have any impact at all on the callbacks of the same name, which continue to exist and are not deprecated. This only affects the Promise methods!

https://github.com/jquery/jquery/issues/2084

Error cases don’t silently fail

Perhaps in a profound moment you’ve wondered, “What is the offset of a window?” Then you probably realized that is a crazy question – how can a window even have an offset?

In the past, jQuery has sometimes tried to make cases like this return something rather than having them throw errors. In this particular case of asking for the offset of a window, the answer up to now has been { top: 0, left: 0 } With this alpha of jQuery 3.0 we’re experimenting with the idea of having such cases throw errors so that crazy requests aren’t silently ignored. Please try the alpha and see if there is any code out there depending on jQuery to mask problems with invalid inputs.

https://github.com/jquery/jquery/issues/1784

.width(), .height(), .css(“width”), and .css(“height”) to return decimal values (whenever the browser does)

Previously, jQuery rounded values when retrieving width and height. Some browsers return subpixel values – such as IE and Firefox – and sometimes users need this precision when relying on these values for layout. We don’t expect this change to have a big impact on your code, but let us know if it does.

https://github.com/jquery/jquery/issues/1724

Removed deprecated event aliases

.load, .unload, and .error, deprecated since jQuery 1.8, are no more. Use .on() to register listeners.

https://github.com/jquery/jquery/issues/2286

jQuery.swap, jQuery.buildFragment, and jQuery.domManip are no longer accessible on the jQuery object

These methods were always intended for internal use only and were never documented. We are finally making them private to avoid confusion.

https://github.com/jquery/jquery/issues/2224
https://github.com/jquery/jquery/issues/2225

Animations now use requestAnimationFrame

On platforms that support the requestAnimationFrame API, which is pretty much everywhere but IE8 and IE9, jQuery will now use that API when performing animations. This should result in animations that are smoother and use less CPU time – and save battery as well on mobile devices.

jQuery tried using requestAnimationFrame a few years back but there were serious compatibility issues with existing code so we had to back it out. We think we’ve beaten most of those issues by suspending animations while a browser tab is out of view. Still, any code that depends on animations to always run in nearly real-time is making an unrealistic assumption.

.unwrap( selector )

Before jQuery 3.0, the .unwrap() method did not take any arguments. The selector parameter offers a way to be specific about which wrappers to remove.

https://github.com/jquery/jquery/issues/1744

Massive speedups for some jQuery custom selectors

Thanks to some detective work by Paul Irish at Google, we identified some cases where we could skip a bunch of extra work when custom selectors like :visible are used many times in the same document. That particular case is up to 17 times faster now!

Keep in mind that even with this improvement, selectors like :visible and :hidden can be expensive because they depend on the browser to determine whether elements are actually displaying on the page. That may require, in the worst case, a complete recalculation of CSS styles and page layout! While we don’t discourage their use in most cases, we recommend testing your pages to determine if these selectors are causing performance issues.

https://github.com/jquery/jquery/issues/2042

 

Thanks

Many thanks to all of you who participated in this release by testing, reporting bugs, or submitting patches, including Chris Antaki, Jason Bedard, Leonardo Braga, Bastian Buchholz, Anne-Gaelle Colom, David Corbacho, Brenard Cubacub, Hamish Dickson, Ben Edelman, Stephen Edgar, elas7, flexphperia, Corey Frang, Xue Fuqiao, Oleg Gaidarenko, Richard Gibson, Michał Gołębiowski, Scott González, goob, Veaceslav Grimalschi, Mu Haibao, Dan Hart, Frederic Hemberger, Nicolas Henry, Daniel Herman, Jon Hester, Victor Homyakov, Winston Howes, Daniel Husar, Essam Al Joubori, Veres Lajos, George Mauer, Richard McDaniel, Amit Merchant, Calvin Metcalf, Dave Methvin, MightyBranch, Nazar Mokrynskyi, Matthew Mueller, Martin Naumann, Alexander O’Mara, Randson Oliveira, Gilad Peleg, James Pearce, PJ, Senya Pugach, Aditya Raghavan, Chris Rebert, Aurelio De Rosa, Gabriel Schulhof, Mike Sidorov, Nick Stefan, Arthur Stolyar, Timo Tijhof, Ben Toews, Thomas Tortorini, Shivaji Varma, Arthur Verschaeve, Rick Waldron, Bin Xin, Imran M Yousuf, Jörn Zaefferer.

 

Changes

Here is the full list of changes since the last official releases (1.11.3 and 2.1.4):

 

Common to both jQuery and jQuery Compat

Ajax

  • Always use script injection in globalEval (#14757, bbdfbb4)
  • Remove jsonp callbacks through “jQuery#removeProp” method (#2323, a2ae215)
  • remove event dependency from the ajax module (4e7f34f)
  • Fix for request aborted in ajaxSend (#1775, 598ed05)
  • use anchor tag for parsing urls (#1875, b091fdb)
  • Fix cross-domain detection test for non-default port (83b038f)
  • $.post and $.get can now take an options object (#1986, 89ce0af)
  • simplify one ajax call and add explanatory comment (0ac28ed)
  • make jQuery#load “type” field explicit (4ef120d)
  • replace “jqXHR.complete” callback with “always” (97ef1f2)
  • remove deprecated extensions from ajax promise (#2084, 9d1b989)
  • remove use of jQuery#each second argument (a4715f4)
  • remove “onunload” event handler (a117dd0)
  • Remove remnants of the load event alias handling (38a6697)

Attributes

  • add SVG class manipulation (#2199, 20aaed3)
  • return null when attribute does not exist (#2118, aaeed53)
  • Use the option val hook in select val hook and simplify it (#1902, f6302b0)
  • remove unnecessary element null check (55ac56a)
  • fix failing test for new return value (5dc4616)
  • revert returning null for non-elements (7632b74)
  • revert returning null for non-existant attributes (2905961)

Build

  • update Sizzle to 2.0.0 (bcca4f0)
  • Update grunt-contrib-jshint (1556c46)
  • remove bower.json lint target (285cfbf)
  • add mailmap entry (3ec73ef)
  • Update the license attribute (#2331, 8e92e1e)
  • drop bower; use npm for front-end deps (#15186, e1949f4)
  • update front-end dependencies (8356948)
  • update node dependencies barring jscs (8e3a0ce)
  • update grunt-jscs-checker and pass with the new rules (c869a1e)
  • update requirejs dependency to 2.1.17 (#2290, a644101)
  • update source map options for the new grunt jshint (269a27c)
  • bower.json: remove moot `version` field (61e21a4)
  • fix broken assertions caused by QUnit update (8b6aeae)
  • Update commitplease dev dependency (39b7606)
  • remove deprecated JSHint options (34da7d5)
  • update AUTHORS.txt (8f13997)
  • Upgrade to commitplease 2.0.0 (5bc1ddc)
  • Update QUnit to latest (1.17.1) (2d5c5d2)
  • update version to 3.0.0-pre (7a607c5)
  • Move test to appropriate module (fbdbb6f)
  • Fix various typos (dc4b914)
  • Speed up the Travis build (31f4f8e)
  • Remove empty define({}) from build output (#1768, 2c1b556)
  • Remove npm from dependencies (b92acf7)
  • Upgrade to grunt-bowercopy 1.0.0 (323e82c)
  • Remove unused Sizzle test files (8d11310)
  • fix tests in AMD mode (6051609)
  • Move all external libraries to external directory (c5d9d88)
  • account for version labels in Sizzle versions (#1939, 78ac753)
  • update node dependencies (9101704)
  • Sizzle version labels must start with a dash (d6c97ab)
  • Don’t assume the browser environment; smoke test on Node w/ jsdom (#1950, 76df9e4)
  • Remove dates from copyright notice (66e1b6b)
  • Specify valid components for commit messages (0c9d018)
  • ignore test dependencies for npm install (35f8e15)
  • update Sizzle to 1.11.1 and include license (c0b23e2)
  • update Sizzle (#2042, #1969, 3a0dd5a)
  • update grunt-bowercopy (712e78c)
  • Update license (4f776e5)
  • Sanctify the component name status of Wrap (a4133ff)
  • Update native-promise-only (again) (f5aa89a)
  • Rearrange grunt/npm tasks into a build/dist/test pattern (bb928bd)
  • Update native-promise-only (0065e1f)
  • save sinon update for later (#2160, 98c25b7)

Callbacks

Core

  • Return empty array instead of null for parseHTML(“”) (#1997, 4116914)
  • use document.implemenation.createHTMLDocument in jQuery.parseHTML (58c2460)
  • Follow the AMD specification for define (892625b)
  • Throw an error on $(“#”) rather than returning 0-length collection (80022c8)
  • allow init to accept an alternate rootjQuery for migrate’s sake (#2101, 7a6931d)
  • remove unnecessary support test for createHTMLDocument (5923282)
  • pass empty string to createHTMLDocument to appease IE (31c7d7f)
  • revert addition of createHTMLDocument. Thanks, Safari 8. (b779831)
  • Update tested jsdom, drop obsolete workarounds (#2153, 06f6cd1)
  • re-introduce createHTMLDocument in parseHTML; Safari 8 left out (cfe468f)
  • Standardize indexOf comparisons (53aa87f)
  • remove custom ready event (#2264, c252c5f)
  • Consistently use local reference to access() (2fb719e)
  • Remove deprecated context and selector properties (#1908, 0ea8c32)
  • remove isArraylike check for nodes (#2238, 436f0ae)
  • add support to tag-hyphenated elements (534f130)
  • Use window.setTimeout & friends instead of global equivalents (#2177, 219c749)
  • Drop size and andSelf methods (#1749, f110360)
  • Drop strundefined variable (29838b6)
  • Make jQuery objects iterable (#1693, bb026fc)
  • add workaround for iOS JIT error in isArrayLike (#2145, 1541664)
  • Test all factory use cases from intro.js (#2181, ab40725)
  • Switch from modules to just window.setTimeout etc. (842958e)
  • Align branches: remove an unused variable, add comments (f6de5a9)
  • simplify “each” stylesheet iteration test (fcb6c4d)
  • Simplify and speed up .each (eeda11c)
  • organize prop & attr code to be similar (5153b53)
  • change jQuery.each and jQuery#each signatures (#2090, 2380028)

CSS

  • CSS:Event: simplification of native method signatures (85577a3)
  • Fix the “sanity check” test (995f707)
  • Remove non-functional unit test for negative margin (4ab7431)
  • Add an integration test for issue gh-1764 (8887106)
  • Remove use of getDefaultComputedStyle (#15227, 274feb5)
  • Use pre-defined displays for html and body (a772418)
  • Correct typo in the comment (7e09619)
  • Removed redundant “to the number” in comment (895ea68)
  • fix :visible/:hidden selectors for inline element w/ content (#2227, 79bcb29)
  • Support relative adjustment in any applicable unit (#1711, 9b03f6d)
  • elements are hidden when either offsetWidth or offsetHeight is zero (#10406, #13132, 10399dd)
  • Ignore the CSS cascade in show()/hide()/etc. (#1767, #2071, 86419b1)
  • Fix the pixelMarginRight support test in Android 2.3 (cdfc2d0)
  • Clean up memory leak in reliableMarginRight (#1795, 7d15b4d)
  • Don’t cache unrecognized CSS property names (#2015, d471842)
  • Don’t name the anonymous swap function (0019a46)
  • make the getStyles function more readable (3a0d582)
  • Work around an IE11 fullscreen dimensions bug (#1764, 90d828b)
  • Add unit tests for negative margins and positioning (1b932bb)
  • simplify “defaultDisplay” module (c62486f)
  • Make .css(“width”) & .css(“height”) return fractional values (#1724, b60b26e)
  • Don’t expose jQuery.swap (#2058, bb4d888)
  • Improve a comment explaining IE11 fullscreen bug (8e4aac8)

Data

  • do not include digits when camelCasing (#1751, 2862a07)
  • always camelCase keys in .data() (#2257, 0e79098)
  • Use a PDF object instead of a Java applet for acceptData testing (#1938, 087d280)
  • camelCasing should not ignore case (#2070, 172cad8)

Deferred

Dimensions

  • allow modification of coordinates argument (#1848, f7e60dc)

Docs

  • 1.x-master branch -> compat branch; 2.x branch -> master branch (758fd6c)
  • correct grunt command in README.md (#1850, 9d6beac)
  • remove redundant instruction from the readme (#2359, 3c92770)
  • Clarify custom build instructions (a3779bc)

Effects

  • Adding unit tests for jQuery.Animation (b3b2d6c)
  • Reintroduce use of requestAnimationFrame (#15147, 72119e0)
  • add tests for jQuery.easing._default in Animation and Tween (6d7ef56)
  • set default easing using jQuery.easing._default (#2219, 5f2ea40)
  • Add tests for jQuery.Tween (cdaed15)
  • Improve raf logic (708764f)

Events

  • remove preDispatch hook & simplify “simulate” signature (3655c4e)
  • remove guard for falsy handler argument of jQuery#on method (fac67a9)
  • add support comment (9db9316)
  • correct support comment (361a0d5)
  • HTML5 drop events inherit from MouseEvent (#2009, d7e5fce)
  • Fully clean up events in unit test (4467ed6)
  • Empty namespaces should be uneventfully ignored (8653068)
  • remove outdated originalEvent hack (6df669f)
  • Remove fake originalEvent from jQuery.Event.simulate (#2300, 7475d5d)
  • fix incorrect window bug with scrollTop/Left in iframes (#1945, d21edb5)
  • remove deprecated event aliases (#2286, 0705be4)
  • Add a note about a mouseenter bug in Chrome (a5e1c9b)
  • Restore the `constructor` property on jQuery.Event prototype (#15090, b807aed)
  • Copy detail property to jQuery.Event on native events (#1867, d9ed166)
  • Remove an internal argument to the on method (04a2969)
  • Normalize mouse event properties in drag events (#1925, 97cf528)
  • provide verbose comment for focus(in | out) & rename support prop (c074006)
  • remove redundant guards for the event methods (#2047, a873558)

Manipulation

Misc

  • Drop support for older browsers; update support comments (740e190)
  • Need for speed removed by 9ad6e7e (ff928f5)
  • Mac OS is now OS X, thanks @xfq (d30c482)

Offset

  • remove ownerDocument check in offset getter (#2115, 6176567)
  • Round offset value for the sake of floating errors (#2147, 62ae2d0)
  • return zeros for disconnected/hidden elements (#2310, 40dcc76)
  • Fix .offset() to correctly work with ShadowDOM (#1784, 1617479)
  • account for scroll when calculating position (#1708, 2d71594)
  • don’t run scrollTop/scrollLeft iframe test in Android 2.3 & 4.0 (#1981, 0c46643)
  • return before getBoundingClientRect to avoid error in IE8-11 (0e4477c)
  • add tests for hidden elements + scroll (b041242)
  • simplify jQuery#offsetParent method (74ae544)

README

  • Fix punctuation in tile (df62159)
  • Fix minor style issues. Thanks @MightyBranch! (edfc94d)
  • update the Homebrew site address (b410b15)
  • various text fixes (31b63fc)
  • Update the description of the deprecated module (1d75273)
  • Improve build instructions (2e9c1ea)

Release

  • update AUTHORS.txt (e905dcd)
  • Remove copying of jquery-latest files (c34ed46)
  • properly set the dist remote when it’s a real release (c44dd77)
  • bower.json is actually generated from scratch (61224f5)
  • Distribute files to distribution repo (#1869, #1673, #2045, 26eca14)
  • dist can be run during a test (aae998b)
  • push dist to same remote as project (1ba45fc)
  • remove sourcemap comment from all copies of minified file (#1707, a76c781)
  • fix CDN archive creation (#1940, e0673df)

Selector/Sizzle

  • add jQuery.uniqueSort; deprecate jQuery.unique (#2228, e1090c3)
  • add test for jQuery.unique() alias (add85af)
  • Remove “#” exception for identifier tokens (86e62d8)
  • update to 2.1.1 (7602dc7)

Support

  • Re-organize browser order, add Safari 8 (43faf6d)
  • Correct iOS 8 support test results, re-arrange entries (ce308e2)

Tests

  • Update QUnit (6748ba3)
  • Minor updates for QUnit 1.16 compatibility (26276a3)
  • Accommodate page changes from the QUnit HTML reporter (3c13f4c)
  • Increase QUnit timeout (ff18d8e)
  • Tilt at a few style guide windmills (906caeb)
  • Correct a typo in the regex matching Safari 8 (c17543f)
  • Add Microsoft Edge results (from Windows 10 build 10130) (8e111df)
  • Remove Edge version from the user agent (5a1217e)
  • Remove test/data/ua.txt (#2398, e831856)
  • fix tests in accordance with new :visible behavior (16713fb)
  • add the current version of node and iojs to the travis config (bd9a138)
  • Expand CSS relative adjustment tolerance for IE (e22ef5d)
  • Fix CSS relative adjustment test for round-down browsers (48be675)
  • Lower the checks rounding error (a44cfa0)
  • make top of the HTML suite compliant with style guide (8356281)

Wrap

  • Support .unwrap( selector) for selective unwrapping (#1744, 7b09235)

 

jQuery 3.0 Only

Ajax

  • Remove workaround for IE6/7 (e519098)
  • simplify jQuery.parseXML method (5a0867d)

Build

  • use different versions of jsdom for Node and iojs testing (#2266, 5c3101f)
  • Refactor Node smoke tests (9c8a3ec)
  • Moved JSHint directives to .jshintrc file (15a609f)

CSS

  • save 20 bytes in css/support (45ec73f)
  • Collapse a double if statement into one (7855a1a)
  • Restore the hack to get pixels for .css(‘width’) etc. (3747cc6)

Data

  • shave off a couple of bytes (6f65f5f)
  • avoid Object.defineProperties for nodes (#1728, 95fb798)
  • avoid non-alphanumeric chars in expando properties (0cdec79)
  • updates to element[expando] cache (222ac3a)
  • move element cache to element[expando] (#1734, d702b76)
  • remove some unused code (764dc94)
  • remove the expando when there’s no more data (#1760, 56bb677)
  • speed up $.fn.data() for camel-cased key (#1941, 72c4a06)
  • restore explicit data removal of private data in cleanData. (#2127, 332fd94)
  • Drop the tests relying on applets (#1938, 95c0a10)

Docs

  • Add info about Sizzle not being excludable on the compat branch (#2184, 062b526)
  • Fix README uppercase (b50e0f2)

Manipulation

  • Tolerate XMLNode host object input to getAll (#15151, 1ae025e)
  • Check state lost if the name is set for Android 4.0-4.3 (1bbb678)

Misc

  • Adjust comments & docs to dropping IE * Misc: Update all references to bugs.jquery.com (#1681, 3e89a53)
  • Remove leftover -moz-box-sizing in tests (e81b258)

Offset

  • Simplified a conditional (4287442)
  • don’t run scrollTop/scrollLeft iframe test in mobile Safari (4ab8603)

README

  • Add selector-native.js link. Thanks @randsonjs! (cfe2eae)

Tests

  • Remove a trailing comma for compatibility with the compat branch (dc8ba6a)

 

jQuery Compat 3.0 only

Ajax

  • Add support comment and fix code style issue (e38a94a)
  • Run the PATCH test only in IE8 on TestSwarm (#1994, 2524da0)
  • move explanatory comment to appropriate place (04fc801)
  • Use the native XHR for all non-local requests in IE9+ (#1684, 61f812b)
  • Rename Spartan to Edge in a comment (8d88cd5)
  • Fix the XHR fallback logic for IE8 (bd699cb)

Attributes

  • Use typeof check for getAttribute method (075da30)
  • don’t test SVG CSS-class manipulation in IE8 (57fb2dc)
  • fix IE8 issues (f2bcf87)

Build

  • Point to files from the compat branch, not master (b7663ea)
  • Put “jQuery Compat” in banners in built files (8cd6875)
  • 1.x-master -> compat (2912ddd)
  • Add “timers_ie.js” file back to the repo (31e6697)
  • append “+compat” to tag version and jQuery.fn.jquery (#2269, d18b645)
  • Correct indentation issue (d0f27a7)

Callbacks

  • Change broken url to wayback one (e4cbc97)

Core

  • Align code in intro.js with master (fe2a584)

CSS

  • Add a support test for the hack for .css(‘marginRight’) etc. (25bc680)
  • Fix get upper case alpha opacity in IE8 (#1705, c5e8e12)
  • simplify hack of css getter for the computed values (dac716c)
  • fix dependency order for amd (e185aa3)

Data

  • use removeAttribute in cleanData to bypass Chrome bug (#1664, 9d1d90e)

Deferred

  • pass lint in new catch tests (203979d)

Docs

Effects

Events

  • Add reference to data module (2866da9)
  • correct an unfinished comment (ac23f91)

Manipulation

  • don’t test data-URI with script element in IE8 (503e545)
  • Plug an IE8 memory leak in noCloneEvent feature detect (#1840, faf295a)
  • Update html5shiv elements (#15241, a953389)
  • blacklist IE8 from running tests for tag-hyphenated elems (87bb713)

Misc

Offset

  • allow offset setter to throw for disconnected elements (#2114, dc49f62)
  • getBounding doesn’t return width/height in IE8. Fixes test. (3b1de11)
  • fix iframe scrollTop/Left test for IE8 (d632699)
  • fix iframe scrollTop/Left test for IE8 and iPhone (62a333e)
  • revert to jQuery.contains for IE8’s sake (compat only) (6df3990)
  • no need to check for ownerDocument (523de77)

Tests

  • Restore IE8 workarounds (Sinon timers for IE & HTML5 shiv) (0b07c65)

Traversing

  • simplify jQuery#contents method (7230df1)

jQuery 1.11.3 and 2.1.4 Released – iOS Fail-Safe Edition

Posted on by

Here we are again. It’s too late for April Fools, so you can believe us when we tell you that we have two new patch releases for you: jQuery 1.11.3 and 2.1.4.

These releases include a hot-fix for a rare bug in iOS 8.2 and 8.3. This is the only change. As with 1.11.2 and 2.1.3, we do not anticipate any issues when upgrading. However, if you do encounter bugs in upgrading from the previous versions, please let us know.

You can include these files directly from the jQuery CDN if you like, or copy them to your own local server. The 1.x branch includes support for IE 6/7/8 and the 2.x branch does not.

https://code.jquery.com/jquery-1.11.3.js

https://code.jquery.com/jquery-2.1.4.js

These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at https://jquery.com/download/. Please keep in mind that public, third-party CDNs receive their copies today and it can take a few days to post the files. If you’re anxious to get started, our CDN is always available.

Many thanks to all of you who participated in this release by testing, reporting bugs, or submitting patches, including John-David Dalton, Michał Gołębiowski, Oleg Gaidarenko, Richard Gibson, Dave Methvin, Benjamin Poulain, and Oz Solomon.

Thanks for all your support, and we look forward to showing you all we have in store for jQuery 3.0!

 

jQuery 1.11.2 and 2.1.3 Released – Safari Fail-Safe Edition

Posted on by

Season’s greetings! After a thoughtful review of the Naughty and Nice lists, we have decided to leave a small present under the tree to finish 2014: jQuery 1.11.2 and 2.1.3! These releases include several bug fixes to make your cross-browser development experience better.

The most significant fix in this release is a workaround for a serious querySelector bug in Safari 8.0 and 7.1. When this bug popped up we were hopeful that it would be fixed in patch releases but that did not happen. Apple is by far the least transparent browser maker, and we have very little information about when the Webkit patch for this bug might be pulled into Safari. As a result, we have decided to patch this in Sizzle, the selector engine used by jQuery.

A bug like this one emphasizes the benefit of using a library like jQuery rather than going directly to the DOM APIs. Even modern browsers can suffer from bugs that aren’t fixed for a long time, and there are still cross-browser feature differences with several browsers in wide use such as Android 2.3. Special-case code for obscure browser issues can seem unnecessary until you spend a day trying to debug a problem in your own code caused by one. Or worse, lose a paying customer because they couldn’t use your site from their old phone.

Another bug that makes it difficult for us to test jQuery on iOS 8 is that the user agent of the simulator is incorrect so the iOS 8 simulator is not recognized by our unit test infrastructure. The fix for that issue is very simple but Apple won’t tell us if we can count on it being done. For now we’re doing our iOS 8 testing manually.

In addition, this release includes several changes inside jQuery to avoid holding onto DOM elements unnecessarily. Although the old code generally wouldn’t cause things to run incorrectly, web pages might run slowly and use more memory than necessary.

You may notice that we skipped a patch release number in the 2.x branch. We didn’t actually skip it, we built it and found a problem that caused problems when jQuery was used with node. (Many thanks to Denis Sokolov for letting us know immediately and prodding us to fix it!) Rather than shipping those files to the other CDNs, we decided to create new releases.

As far as the potential for compatibility or regression issues, we believe this is a very low-risk upgrade for anyone currently using 1.11.1 or 2.1.1. We are making this release ahead of jQuery 3.0 to ensure that you can use a Safari-safe version of jQuery without the need to review your code for compatibility with changes being anticipated in jQuery 3.0. If you do encounter bugs, in upgrading from the previous version, please let us know.

You can include these files directly from the jQuery CDN if you like, or copy them to your own local server. The 1.x branch includes support for IE 6/7/8 and the 2.x branch does not.

https://code.jquery.com/jquery-1.11.2.js

https://code.jquery.com/jquery-2.1.3.js

These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at https://jquery.com/download/. Public CDNs receive their copies today, please give them a few days to post the files and don’t be impatient. If you’re anxious to get a quick start, just use the files on our CDN until they have a chance to update.

Many thanks to all of you who participated in this release by testing, reporting bugs, or submitting patches, including Chris Antaki, Denis Sokolov, Jason Bedard, Julian Aubourg, Liang Peng, Michał Gołębiowski, Oleg Gaidarenko, PashaG, Richard Gibson, Rodrigo Rosenfeld Rosas, Timmy Willison, and TJ VanToll.

Since the last release of jQuery we have moved from a Trac installation to GitHub issues, so there are currently tickets for this release in both bug trackers. References to the Trac tickets have been migrated to GitHub issues, however, so you can use this GitHub Issues query to review all the tickets.

Thanks for all your support, and see you at jQuery 3.0!

jQuery 3.0: The Next Generations

Posted on by

It’s hard to believe it’s been nearly eight years since jQuery was released. Web development has changed a lot over the years, and jQuery has changed along with it. Through all of this time, the team has tried to walk the line between maintaining compatibility with code from the past versus supporting the best web development practices of the present.

One of those best practices is semantic versioning, or semver for short. In a practical sense, semver gives developers (and build tools) an idea of the risk involved in moving to a new version of software. Version numbers are in the form of MAJOR.MINOR.PATCH with each of the three components being an integer. In semver, if the MAJOR number changes it indicates there are breaking changes in the API and thus developers need to beware.

The concept of versioning gets a little more nuanced with jQuery, where browser compatibility can be just as important as API compatibility. In order to create a slimmer jQuery, the team started shipping two versions in 2013. The first version remained numbered in the 1.x line and, currently at 1.11.1, maintains compatibility with a maximal number of browsers. The second version, starting with 2.0.0 and now at 2.1.1, dropped support for browsers like IE8 or lower in order to streamline the code. Both the 1.x and 2.x versions of jQuery have the same public APIs, even though they differ somewhat in their internal implementations.

Our next releases will use a different nomenclature. As before, there will be two different released files. The successor to what is now version 1.11.1 will become jQuery Compat 3.0. The successor to jQuery 2.1.1 will be jQuery 3.0. There are two different packages on npm and Bower, but they share the same version to indicate they have the same API behavior.

We’ll also be re-aligning our policy for browser support starting with these releases. The main jQuery package remains small and tight by supporting the evergreen browsers (the current and previous versions of a specific browser) that are common at the time of its release. We may support additional browsers in this package based on market share. The jQuery Compat package offers much wider browser support, but at the expense of a larger file size and potentially lower performance.

Despite the big version number jump, we don’t anticipate a lot of migration issues for most current jQuery code. We’re just being good semver citizens with this version bump. Changes such as removing deprecated methods will be detected by a new version of the jQuery Migrate plugin to make them easy to find and fix. We’ll have more details on the changes in future blog posts.

So, here’s the TL;DR for version 3.0 of the jQuery API:

  • If you need support for the widest variety of browsers including IE8, Opera 12, Safari 5, and the like, use the jQuery-Compat 3.0.0 package. We recommend this version for most web sites, since it provides the best compatibility for all website visitors.
  • If your web site is built only for evergreen leading-edge browsers, or is an HTML-based app contained in a webview (for example PhoneGap or Cordova) where you know which browser engines are in use, go for the jQuery 3.0.0 package.
  • Until we announce otherwise, both packages will contain the same public APIs in correspondingly-numbered major and minor versions. This should make it easy for developers to switch between the two and be maximally compatible with third-party jQuery plugins.

With each future release, we’ll be making both packages available on npm and bower. Both packages will also be available as single-file builds on the jQuery CDN. Using them from there is as simple as including either jquery-compat-3.0.0.js or jquery-3.0.0.js depending on your needs. We’ve talked with the folks who run Google’s CDN and they will also be supporting both packages.

As we make further progress on version 3.0, we will update everyone with the details about code changes, supported browsers, and the like. Stay tuned!

Volunteers Wanted: Trac Enhancements

Posted on by

The jQuery and jQuery UI teams use Trac to do their bug reporting and tracking. The jQuery Core bug tracker could really use a Trac expert to migrate us to Trac 1.0 and fix a few nagging issues we’ve been having. If you’re an expert Trac-meister, or just someone with good Trac setup/configuration experience who’s up to the challenge, we’d love to talk with you! Send a message to dave(at)jquery.com and we’ll be in touch.

Since some of you will inevitably ask: GitHub’s integration between issues and commits is wonderful, but it’s not anywhere near as powerful as Trac when it comes to searching and reporting. In addition, our projects have more than seven years of history comprising thousands of bug reports with important data in them. That’s a non-trivial amount of data to import into GitHub issues and groom to be useful once it’s imported. We feel that staying with Trac is the lowest-effort way for us to give us the bug tracking abilities we need.