jQuery 1.10 Beta 1 Released

Posted on by

Today the team is releasing jQuery 1.10 Beta 1. This release should be a relatively easy upgrade for any code that has already been updated for jQuery 1.9/2.0, and it doesn’t introduce a lot of breaking changes–at least not that we know of! That’s why we do beta releases. You tell us.

It may seem like only yesterday that jQuery 1.9 was released, but it was actually all the way back in January. In the meantime, we’ve also delivered jQuery 2.0, the first version of jQuery to leave behind the nightmarish workarounds needed by older versions of Internet Explorer. jQuery 1.10 includes some minor tweaks that we originally introduced in jQuery 2.0, plus bug fixes for issues reported since jQuery 1.9.1.

The biggest change you’re likely to see is that we’ve loosened up the criteria for HTML processing in $(), allowing leading spaces and newlines as we did before version 1.9. We still recommend the use of $.parseHTML() for any HTML coming from external sources. Future versions of jQuery may place tighter restrictions on the kind of markup that $(string) will process, to help you to avoid the ever-present threat of cross-site scripting (XSS) issues.

If you haven’t yet upgraded to the 1.9/2.0 versions yet, catch up by reading the previous blog announcements for jQuery 1.9 and jQuery 2.0. Be sure to check out the jQuery 1.9 Upgrade Guide and the jQuery Migrate plugin.

You can get the beta file here: http://code.jquery.com/jquery-1.10.0-beta1.js

Try this beta code with your most treasured projects and let us know how it works. If you find problems, even when using jQuery Migrate, please report them along with a test case demonstrating the bug at bugs.jquery.com. Please don’t report bugs or ask for help in the blog comments below.

It’s our goal to keep the 1.x and 2.x lines in sync functionally so that 1.10 and 2.0 are equal, followed by 1.11 and 2.1, then 1.12 and 2.2 … well, you see the pattern. Any feature additions or functional changes will happen on these major-point releases. Patch releases will simply fix bugs or bring the two further into sync.

Many thanks to the people who contributed work since 1.9.1 was released: Brandon Johnson, Dmitry Gusev, James Burke, Jason Bedard, Julian Aubourg, Kyle Robinson Young, Mark Raddatz, Michal Golebiowski, Nguyen Phuc Lam, Oleg Gaidarenko, Richard Gibson, Rick Waldron, Scott González, Timmy Willison, Timo Tijhof, and Tom H Fuertes.

jQuery 1.10 Beta 1 Changelog

Attributes

Build

Core

Event

Manipulation

Selector

Support

jQuery Migrate 1.2.1 Released

Posted on by

They say there are no second acts in software … well, there are always second acts in software. Especially when the first act bombs. With that in mind, version 1.2.1 of the jQuery Migrate plugin has arrived. It can be used with either jQuery 1.9 or jQuery 2.0.

This minor update addresses regressions created by the security fix in the 1.2.0 release that rejected some valid HTML strings. Many thanks to GitHub users gerrod, basc, Leonya, krzyko, and lorddefinitia for reporting these issues.

You can find this latest version of the jQuery Migrate plugin on jQuery’s CDN:

Complete instructions and a complete list of the diagnostics given by the plugin are located in the plugin project’s README file.

A full list of all changes are in the issue tracker.

jQuery 2.0 Released

Posted on by

You asked for it, you got it: jQuery 2.0 has arrived!

As promised, this version leaves behind the older Internet Explorer 6, 7, and 8 browsers. In return it is smaller, faster, and can be used in JavaScript environments where the code needed for old-IE compatibility often causes problems of its own. But don’t worry, the jQuery team still supports the 1.x branch which does run on IE 6/7/8. You can (and should) continue to use jQuery 1.9 (and the upcoming 1.10) on web sites that need to accommodate older browsers.

Where to Get It

The final jQuery 2.0.0 files can be found here on the jQuery CDN:

The files should also be available on the Google and Microsoft CDNs soon, but please give these folks a few days before releasing a storm of impatient tweets. Also remember that production web sites should be requesting a specific version from any CDN; using a non-specific version like /2/ or jquery-latest.js is considered harmful to your web site’s health and performance.

If you’re upgrading from a version before 1.9, we recommend that you use the jQuery Migrate plugin and read the jQuery 1.9 Upgrade Guide, since there have been a lot of changes. It’s easy to use the plugin, just include it in your HTML file after jQuery and open your browser console to see the messages it generates:

<script src="http://code.jquery.com/jquery-2.0.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"></script>

How to Use It

jQuery 2.0 is intended for the modern web; we’ve got jQuery 1.x to handle older browsers and fully expect to support it for several more years. If you want, you can serve 2.0 to newer browsers and 1.9 to older ones using our conditional comment trick, but that is not required. The simplest way to support older browsers is to use jQuery 1.x on your site, since it works for all browsers.

With the release of jQuery 2.0, there are a few environments where the jQuery team will no longer support use of the 1.x line because 2.x is a far better choice. These are typically non-web-site scenarios where support for older IE isn’t relevant. They include:

  • Google Chrome add-ons
  • Mozilla XUL apps and Firefox extensions
  • Firefox OS apps
  • Chrome OS apps
  • Windows 8 Store (“Modern/Metro UI”) apps
  • BlackBerry 10 WebWorks apps
  • PhoneGap/Cordova apps
  • Apple UIWebView class
  • Microsoft WebBrowser control
  • node.js (combined with jsdom or similar)

Many of these environments are themselves a work in progress, and have unique sets of rules or restrictions that are different from the ones typically found when jQuery is used for browsers on Internet web sites. Although we aren’t able to test regularly in all of these non-browser scenarios, we’d like to hear about your experiences in using jQuery with them. Even better, we’d love for the communities supporting these environments to pool and share their knowledge about how to use jQuery 2.0 there.

How 2.0 Changed

Here are some highlights of the changes that jQuery 2.0 brings:

No more support for IE 6/7/8: Remember that this can also affect IE9 and even IE10 if they are used in their “Compatibility View” modes that emulate older versions. To prevent these newer IE versions from slipping back into prehistoric modes, we suggest you always use an X-UA-Compatible tag or HTTP header. If you can use the HTTP header it is slightly better for performance because it avoids a potential browser parser restart.

Reduced size: The final 2.0.0 file is 12 percent smaller than the 1.9.1 file, thanks to the elimination of patches that were only needed for IE 6, 7, and 8. We had hoped to remove even more code and increase performance, but older Android/WebKit 2.x browsers are now the weakest link. We’re carefully watching Android 2.x market share to determine when we can cross it off the support list, and don’t expect it to take very long.

Custom builds for even smaller files: This feature has been greatly refined and extended since its debut in jQuery 1.8. You can now exclude combinations of 12 different modules to create a custom version that is even smaller. A new minimal selector engine, basically a thin wrapper around the browser’s querySelectorAll API, lets you shrink the build to less than 10KB when minified and gzipped. See the README for instructions on how to create a custom build, and remember that any plugins you use will also need to stick to the subset you select.

jQuery 1.9 API equivalence: jQuery 2.0 is API-compatible with 1.9, which means that all of the changes documented in the jQuery 1.9 Upgrade Guide have been applied to jQuery 2.0 as well. If you haven’t yet upgraded to jQuery 1.9, you may want to try that first. Be sure to use the jQuery Migrate plugin.

The full record of changes can be found in the changelog below, and in the list of commits on GitHub.

What’s Next

In keeping with our pledge to minimize API divergence between the 1.x and 2.x branches, we’ll be releasing a jQuery 1.10 within a couple of months that incorporates the bug fixes and differences reported from both the 1.9 and 2.0 beta cycles. In the future, we will be maintaining feature parity between 1.10 and 2.0, 1.11 and 2.1, etc. Patch releases will happen in each branch on their own schedule, based on team resources and severity of any reported bugs.

Please do try this new release with all your web sites and HTML apps. If you find problems, create a minimal test case (preferably using a site like jsFiddle or jsbin) and submit it to our bug tracker. We’re particularly interested in situations where jQuery 1.9.1 behaves differently than jQuery 2.0.0, since that’s something we’ve tried to avoid.

Who Helped

jQuery 2.0 has been 10 months in the making, a product of the jQuery Core team: Julian Aubourg, Corey Frang, Oleg Gaidarenko, Richard Gibson, Michal Golebiowski, Mike Sherov, Rick Waldron, and Timmy Willison. Oleg and Michal joined the team during the 2.0 odyssey; we’re glad to have them aboard.

Many thanks to the other jQuery team and community members who contributed fixes: Steven Benner, Pascal Borreli, Jean Boussier, James Burke, Adam Coulombe, Tom Fuertes, Scott González, Dmitry Gusev, Daniel Herman, Nguyen Phuc Lam, Andrew Plummer, Mark Raddatz, Jonathan Sampson, Renato Oliveira dos Santos, Ryunosuke Sato, Isaac Schlueter, Karl Sieburg, Danil Somsikov, Timo Tijhof, and Li Xudong.

To those of you who tested the betas and reported bugs, we’re especially thankful for your help since it helped to make the release more solid and stable.

How You Can Help

Please, participate! Try the code (especially the betas), file good bug reports with clear test cases, contribute patches. Write or edit documentation. Come to the jQuery Conference Portland in June and mingle with other jQuery-ites. Visit contribute.jquery.org to learn how to get involved with the project.

You can also become a jQuery Foundation member to support our efforts and get some fabulous gifts in the process!

jQuery 2.0.0 Changelog

Ajax

Attributes

Build

Core

Css

Deferred

Effects

Event

Manipulation

Selector

Support

Traversing

Please do not report bugs in the blog comments! Instead, read the blog post for details on how to report bugs.

jQuery 2.0 Beta 3 Released

Posted on by

We’re coming down the home stretch for the release of jQuery 2.0! Today sees the release of Beta 3.

To paraphrase Dirty Harry: I know what you’re thinking. “Is Beta 3 gonna break my code?” Well, to tell you the truth, in all this excitement we may have lost track of things and introduced some bugs. So being as this is jQuery, the most powerful JavaScript library in the world, and could blow your web site clean off the Internets, you’ve got to ask yourself one question: “Do I feel lucky?” Well, do ya?

We don’t want to accidentally blow your site off the Internets; don’t count on being lucky. That means we really need your help in finding and fixing any bugs that may be hiding in the nooks and crannies of jQuery 2.0. We want to get all the problems ironed out before this version ships, and the only way to do that is to find out whether it runs with your code.

You can get this latest beta from the jQuery CDN: http://code.jquery.com/jquery-2.0.0-beta3.js

You can also use the jQuery Migrate plugin with jQuery 2.0 to restore deprecated features from those older versions and/or diagnose compatibility issues. We strongly recommend that you do use Migrate for older code, it will save a lot of time and trouble in debugging.

Staying in Sync

Remember that jQuery 2.0 will not run on IE 6, 7, or 8. You must run Internet Explorer 9 or 10 in their “modern” mode and not use the X-UA-Compatible feature, for example, to force IE10 into IE7 mode.

The jQuery team will continue to support both the jQuery 1.x and 2.x lines simultaneously for as long as those older versions of IE are still a factor. The currently released version of jQuery 1.x, which is 1.9.1, has the same API as jQuery 2.0. We are planning a 1.10 update to the 1.x line in a few months that will address any minor differences in the two versions. At that point we will still keep the two lines in sync: 1.10 and 2.0, 1.11 and 2.1, etc.

If you’d like to try jQuery 2.0 on web sites where you still need to support IE 6, 7, and 8, you can use conditional comments. All browsers except old IE will get the second script and ignore the first:

<!--[if lt IE 9]>
    <script src="jquery-1.9.1.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0b3.js"></script>
<!--<![endif]-->

Remember, however, that jQuery 1.x continues to work on all the browsers that jQuery supports.

What’s New

Here are the major changes since Beta 2:

Node.js compatibility. If the jquery.js file is included in Node via require(), it will export the jQuery object.

Windows 8 Store App compatibility. Some feature detects that were only needed for IE 6/7/8 were removed to prevent a security exception in Windows Store apps.

More bug fixes. This beta includes fixes to bugs reported since jQuery 2.0 beta 2 and jQuery 1.9.1 were shipped. The complete list is below.

Remove jQuery.support.boxModel. Nobody should be using this property since it has been deprecated since jQuery 1.3 and jQuery itself has never supported Quirks mode.

Further nips and tucks to the code. Fixing bugs often adds more bytes, but we’ve been able to actually reduce the size of the full minified/gzipped build by a couple of dozen bytes.

The wrap methods can now be excluded in a custom build. If you (and the plugins you use) aren’t calling any of the wrap methods like .wrapAll() or .unwrap(), you can leave them out of your custom build.

Custom builds under 10k bytes! If you’re able to exclude all the optional modules, you’ll be rewarded with a custom build that’s only 9,226 bytes when minified and gzipped. See the beta 2 blog post for more information on how to do custom builds.

The full list of commits is available on GitHub and the closed bug tickets are below. Many thanks to Rick Waldron, Michal Golebiowski, Li Xudong, Timmy Willison, Nguyen Phuc Lam, Steven Benner, Tom Fuertes, Richard Gibson, Scott González, and Oleg Gaidarenko for their efforts on this beta.

Ajax

Build

Core

Css

Deferred

Effects

Event

Manipulation

Selector

Support

Traversing

jQuery 2.0 Beta 2 Released

Posted on by

The next beta of jQuery 2.0 has arrived! This beta has several changes and tweaks based on the feedback we received from those of you who generously tested the first beta. We really need you to test this version as well and let us know what still needs to be done. We believe this version is very stable and ready for you to try; don’t wait until the final release and then find out your code doesn’t run with it.

Remember that jQuery 2.0 will not run on IE 6, 7, or 8; we’re saving that duty for jQuery 1.9. We fully expect that most Internet web sites may continue to use jQuery 1.x for quite a while, as long as older versions of IE still comprise a large proportion of web surfers. And so the jQuery team will also continue to support both the jQuery 1.x and 2.x lines. Don’t feel like you’re missing something or falling behind by using 1.9 on your web site, since the APIs for 1.9 and 2.0 are the same.

If you’d like to try jQuery 2.0 on web sites where you still need to support IE 6, 7, and 8, you can use conditional comments. All browsers except old IE will get the second script and ignore the first:

<!--[if lt IE 9]>
    <script src="jquery-1.9.1.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0b2.js"></script>
<!--<![endif]-->

There are lots of other environments where jQuery 2.0 should fit in very well. Here are a few suggestions:

  • Google Chrome plugins
  • Mozilla XUL apps and Firefox extensions
  • Firefox OS apps
  • Chrome OS apps
  • Windows 8 Store (“Modern/Metro UI”) apps
  • BlackBerry 10 WebWorks apps
  • PhoneGap/Cordova apps
  • Apple UIWebView class
  • Microsoft WebBrowser control
  • Cheerio or jsdom with node.js
  • Intranet applications

On the node.js front, the jQuery team now owns the “jquery” and “jQuery” names in npm and will soon be shipping 2.0 releases there.

You can get this latest beta from the jQuery CDN:

http://code.jquery.com/jquery-2.0.0b2.js

To run pre-1.9-era code with jQuery 2.0, you can also use the jQuery Migrate plugin to restore deprecated features from those older versions and/or diagnose compatibility issues. We strongly recommend that you do use Migrate for older code, it will save a lot of time and trouble in debugging.

What’s New

Lots of bug fixes: All the relevant fixes from jQuery 1.9.1 and 1.9.2pre have been incorporated into jQuery 2.0 beta 2. We sadly had to back out some optimizations that aren’t supported by older versions of WebKit such as Android 2.3, but most of those didn’t have a significant size impact. Still, we plan to bring them back as soon as we can! To help us out, anytime you see an old Android phone you can “accidentally” whack it with a hammer.

New .data() implementation: This new code is a complete rewrite by Rick Waldron. It’s smaller, simpler, and much more maintainable than the old code.

Increased modularity in custom builds: You can now exclude all the redundant event shorthands such as .mouseover(...) if you’re willing to use .on("mouseover"...) instead.

Minimal selector engine: Richard Gibson created a small wrapper around the browser’s native querySelectorAll and matchesSelector APIs that can be used as a replacement for the full-fledged Sizzle selector engine. Be aware, however, that there are major differences in the supported selectors and semantics. This minimal engine does not support jQuery selector extensions like :radio or :first for example.

Custom Builds

We’d love for you to try out the custom build system which is based on grunt. The README gives more detail on making a custom build. As of beta 2 you can replace Sizzle with a simple selector engine and exclude css, event aliases, animations, offset, and deprecated functionality such as .andSelf() that has not yet been removed. In addition you can exclude a subset of the script, JSONP, or XMLHTTPRequest transports. That’s right, reject any module in our jQuery reality and substitute your own.

Here is an example of what you can save with modular builds. Let’s say you don’t need the css, offset, dimensions, or deprecated modules and plan to do animations completely via CSS transitions and classes. In addition you only use JSONP via $.ajax(). You’ll use .on() for event management and keep your selectors simple so that the minimal selector engine can do the job. The build command to do that is:

grunt custom:-sizzle,-css,-event-alias,-effects,-offset,-dimensions,-deprecated,-ajax/xhr

The resulting file from that custom build is just 17,530 bytes when transferred by gzip, which is 40 percent smaller than the full 2.0 build at 29,387 bytes gzipped. For comparison, the current 1.9 branch is 32,770 bytes gzipped.

We still think that the vast majority of jQuery users are best served by the simplest option: Use the full version of jQuery, served from a CDN or your local server. Most jQuery plugins are not written in a way that would allow you to use a subset of jQuery core functionality — after all, they never anticipated any of it would be missing! But for situations where it’s worth the time to determine those dependencies, jQuery’s current level of modularity offers awesome flexibility.

Many thanks to the people who contributed fixes to this release: Adam Coulombe, Andrew Plummer, Danil Somsikov, Dmitry Gusev, Isaac Schlueter, James Burke, Jean Boussier, Julian Aubourg, Karl Sieburg, Mark Raddatz, Mike Sherov, Nguyen Phuc Lam, Oleg Gaidarenko, Pascal Borelli, Richard Gibson, Rick Waldron, Ryunosuke Sato, Timmy Willison, and Timo Tijhof. Special recognition to Scott González for his minimalist work simply titled, “Whitespace“.

Changelog

Ajax

Build

Core

Css

Deferred

Effects

Event

Manipulation

Selector

Support

Traversing

Try jQuery Interactive Course

Posted on by

Reading documentation, blogs, and forums are useful ways to learn how to use jQuery, but there is ultimately no substitute for actually writing code. That’s why we’ve been collaborating with Code School to create Try jQuery, a brand new introductory course with video and interactive examples to make it easier to take those first steps. Try jQuery Course Badge

Try jQuery walks you through the most fundamental building blocks of jQuery, from actually getting the library into your page to selecting, manipulating, and creating DOM elements, and reacting to user input. The entire experience takes place in the browser, so there’s live feedback on your code as you complete the exercises and learn the basics.

The course takes about three hours to complete, but you can take it all at your own pace. Best of all, Try jQuery is completely free! If you’d like to save your progress and earn badges, you can sign up with Code School.

We’re really glad to be able to provide new jQuery users with an easy way to get started. So if you’re looking to understand how to use jQuery — or know someone else who is — we hope Try jQuery helps get you in gear!

Should you encounter any trouble with the course, please contact Code School. If you’d like want to provide feedback on Try jQuery, you can get in touch with us at content at jquery dot com, and you can also reach out to Code School.

jQuery Migrate 1.1.1 Released

Posted on by

To magnify your jQuery migration pleasure, version 1.1.1 of the jQuery Migrate plugin is now available. This plugin can greatly simplify the process of moving older jQuery code to version 1.9.0 or higher of jQuery by identifying deprecated features. It can also restore those features so that older code can run without needing any changes at all. We strongly recommend that you use this plugin in your initial jQuery 1.9 upgrade — make it easy on yourself, that’s why we wrote this plugin!

If you haven’t yet read about jQuery 1.9 and the Migrate plugin, we recommend that you check out the jQuery 1.9 upgrade guide and the original jQuery 1.9 blog post.

Using the plugin is easy; just include it immediately after the script tag for jQuery, for example.

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"></script>

For more information, see the jQuery Migrate documentation.

Here are the items we’ve polished for this version; you can see the complete list at Github. Many thanks to jQuery team member Richard Gibson for his help on this release.

  • Remove “use strict”: Not all code is compatible with JavaScript’s “use strict” mode, so we’ve removed this restriction for the same reason we did in jQuery 1.9.1. This fixes some issues with diagnostic software that uses arguments.caller and with form processing in ASP.NET.
  • $.parseJSON in $.ajax: In 1.9 when an $.ajax() call specifies a dataType: "json" the returned value MUST be valid JSON. Older versions treated an empty string as a success even though it was not valid JSON. The Migrate plugin will now warn about this, treat the result as success and return null as older versions did.
  • Preserve custom $.browser: If the $.browser object has been changed or augmented by code that loaded before jQuery Migrate, those changes will now be preserved. However, we still advise the Migrate plugin be loaded immediately after the jQuery core file.

Happy upgrading!

jQuery 1.9.1 Released

Posted on by

The jQuery team is pleased to announced that jQuery 1.9.1 is available! This release addresses the bugs and regressions that have been reported during the past few weeks. Whether you’re using 1.9.0 or using an older version, these are the droids you’re looking for.

Please, please, please, use the jQuery Migrate plugin and look at the upgrade guide if you’re just starting your upgrade to jQuery 1.9. The plugin will quickly find and fix any compatibility issues, just look in the browser console. Once you fix the warnings you can remove it. Or, leave the plugin in place until you have the chance to fix your code and plugins to make them 1.9-compatible.

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script>

We’ve sent the files to the Google and Microsoft folks, so you should see them up on their CDNs shortly.

Many thanks to those of you who reported bugs, and to the following people who contributed patches to the 1.9.1 release: Adam Coulombe, Andrew Plummer, Corey Frang, Danil Somsikov, Jean Boussier, Julian Aubourg, Mike Sherov, Oleg Gaidarenko, Richard Gibson, Ryunosuke Sato, and Timmy Willison.

Gold-leaf-cluster thanks to Paul Irish, who mobilized special forces to find a solution for 13274!

Change Log

Ajax

Build

Deferred

Effects

Event

Manipulation

Selector

Support

Traversing

jQuery Migrate 1.1.0 Released

Posted on by

Thanks for all your feedback on jQuery 1.9.0! We’re preparing an update to address the issues you’ve found already, but in the meantime here’s a new version of the jQuery Migrate plugin. The plugin can be used with either 1.9 or 2.0 to detect deprecated and removed features, or to restore old features for those sticky situations where you need old code to run with new jQuery. The plugin and the messages it generates are documented in the project README.

Judging by many of the questions and bug reports we’ve gotten, far too many of you are trying to do an upgrade to jQuery 1.9 without also using jQuery Migrate. Stop hitting yourself! We created this plugin to make things easy on you. Just include the plugin after your jQuery file to see if it gives you any warnings. The updated jQuery Migrate plugin is available on jQuery’s CDN, and should be available on the Google and Microsoft CDNs within a few days:

<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script>

With this development version, warning messages appear on the browser’s console. They all start with JQMIGRATE so they’re easy to find. Just match up each message with its description in the warning list to determine what it means and how it can be fixed.

In a perfect jQuery world, you’ll be able to update your code and run without the jQuery Migrate plugin. But we’re realists, and know that it may be a while before you and the authors of your plugins can get around to fixing compatibility issues. We’ve got you covered there as well. Just use the minified version and the plugin’s fixes will stay, but the warnings will be silenced so you can deploy to production:

<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.0.min.js"></script>

Finally, remember that you can include the jQuery Migrate plugin with your existing copy of jQuery all the way back to 1.6.4, to see what issues may arise when you do get around to upgrading.

What’s New?

For a detailed list of the issues that were closed you can see the issue tracker; here are the important highlights:

  • Traces by default: In browsers that support console.trace(), a stack trace will appear after each warning message to make it easier to diagnose. If you prefer to do your own debugging and want to reduce the console clutter, set jQuery.migrateTrace = false.
  • A “Logging is active” message: This message shows up when the plugin starts to let you know it is running. If you don’t see any other messages on the console when testing your pages, you done did good.
  • Invalid JSON: Before jQuery 1.9.0, $.parseJSON() would accept some invalid JSON values such as "" or undefined and return null rather than throwing an error. Migrate 1.1.0 warns about this and restores this old behavior.
  • HTML strings with leading whitespace: jQuery 1.9 restricts the strings processed by $() for security reasons. Although we recommend you use $.parseHTML() to process arbitrary HTML like templates, the 1.1.0 version of the Migrate plugin restores the old behavior.
  • Inappropriate warnings: The Migrate plugin showed a warning for $("<button>", { type: "button" }), which was not correct since that form is allowed on IE6/7/8. That’s been fixed.
  • We’re in the jQuery Plugins site: To set a good example, the jQuery Migrate plugin is on the Plugins site! You can always find it on Github as well.

A Site To Behold: Open Content & Design Comes to jQuery

Posted on by

In the past few days and weeks, you’ve probably already noticed the new theme we’ve been rolling out across our websites. In fact, unless this is your very first time looking at the jQuery blog, this very post probably looks a lot different than what you’ve been used to seeing over the past few years. Today, as this new design finally reaches jquery.com, we are very excited to pull back the curtain and explain the work we’ve been doing and how it goes above and beyond the simple “facelift” it may appear to be at first glance.

As the jQuery ecosystem has grown, it’s become increasingly difficult for the jQuery Team to keep our arms wrapped around a burgeoning balloon of documentation, design, CMS installs and wikis. Community members who’ve wanted to report and fix documentation errors have been left with nowhere to take action, and the picture wasn’t much better even for those who did have access. With all this content and design locked away in production environments behind a slew of different user accounts, and nowhere to track bugs, visibility has been low and progress incremental at best. We knew we had to make a change.

Over the past year, we’ve undertaken a massive effort to consolidate and simplify our site infrastructure and open source all of our web site content, documentation, and design. We’ve done this because it has already done wonders for our own ability to collaborate and move forward, and because we hope it will open up new avenues of participation for all of you out there who have wanted to find a way to get involved with jQuery, but have been unsure you could contribute.

So, enough with the platitudes — on to the stack!

git + grunt + WordPress

We’ve moved nearly all of our documentation and site content into static content repositories on GitHub, where they are maintained in HTML, Markdown, or XML, depending on the type of content. Now, if you notice a typo or think something needs clarification, you can file an issue and even send a pull request with a fix. Everything from the source documentation for jQuery.ajax to the front page of jquery.com to the raw Markdown of this new page that includes the full list of content repositories is open source!

The content is brought to life on our websites using WordPress and our custom theme and multi-site configuration, jquery-wp-content. Using this single WordPress instance makes it exponentially easier and more manageable for us to keep the look and feel of all our different sites in sync, and preserves our ability to easily layer on dynamic features like site search and user accounts as we need them. jquery-wp-content also contains a custom installation script that makes it easy to stand up the entire jQuery sites network for local development, opening up the doors for much less conservative experimentation with fixes and new features. Again, all this means that if you notice bugs on any jQuery website, there’s somewhere to report them, and you can even work on the fix yourself if you want!

(We’ve received an incredible amount of help creating and maintaining jquery-wp-content from WordPress developers Andrew Nacin and Daryl Koopersmith, and we’d be remiss if we didn’t thank them right here for all their hard work!)

The link between WordPress and the static content repositories is a grunt build and deployment process that processes the content files and synchronizes them into a WordPress installation using XML-RPC. That means we don’t ever use the WordPress Administration pages; all authoring and editing just happens in your favorite text editor, then grunt does the hard work.

In order to deploy to our production and staging servers, we simply use git webhooks to respond to commits on the content repositories and jquery-wp-content. Whenever a commit lands on the master branch of these repositories, the content and design is reflected immediately in the staging environment, which is just the URL of the website with a stage. subdomain prefix, e.g., stage.jquery.com. To deploy to the production sites, all that’s necessary is tagging with a semver and pushing the tag.

New Sites

In addition to today’s new look for the blog and jquery.com, we’re happy to unveil some brand new sites that are all powered by this system, which you should find especially useful if you’re looking to find ways to get involved with with jQuery.

Contribute to jQuery

URL: contribute.jquery.org | Repo: github.com/jquery/contribute.jquery.org
Our new hub for information on how to actually get started with contributing to jQuery and open source in general. It’s also full of useful resources for contributors, like our CLA form and style guides used across all of our projects.

jQuery IRC Center

URL: irc.jquery.org | Repo: github.com/jquery/irc.jquery.org
The jQuery Foundation uses Internet Relay Chat extensively for support and project communication. This is where we host the logs from our channels and keep documentation about how you can get connected and what to expect when you get there.

jQuery Brand Guidelines

URL: brand.jquery.org | Repo: github.com/jquery/brand.jquery.org
As we’ve recently freshened up a lot of the conventions we’re using for representing jQuery, we’ve also published these guidelines so that the community can have a better understanding of how they can — and can’t — use the names and marks of jQuery Foundation projects.

Sunrise, Sunset

We’ll also be saying goodbye to some subdomains in the next few weeks, and we wanted to give you a heads up, so you can prepare if necessary.

docs.jquery.com

Our original MediaWiki documentation-and-catch-all site has served admirably over the years, but it is time to put it out to pasture. We’ll continue to redirect the popular URLs on this site to their more modern counterparts.

meetups.jquery.com

Hosting our own meetup network was an interesting experiment, but the site gets almost no usage and is cumbersome for us to continue to manage, so we will be shutting it down. We recommend organizers use other, more established platforms such as meetup.com.


In addition to the new sites we’ve just launched, we’ll be continuing to roll out other new sites and integrate more of our existing sites into with the new theme over the coming days and weeks. We’re really happy with how it’s working so far, and look forward to continuing to improve the sites — perhaps with your help! As always, if you have trouble with any of this, please file issues, join us in the #jquery-content channel on freenode, or send an e-mail to content at jquery dot com.