Blog

jQuery 1.9 Beta 1 Released

Posted December 17th, 2012 by dmethvin

You’ve been good boys and girls this year, so look what Santa left under the source tree: jQuery 1.9 Beta 1! We’ve made a lot of changes this time, so we need your help in testing more than ever. Please don’t leave us feeling awkward at the holiday party with that punch bowl full of warm eggnog and the creepy guy from accounting. Just take a few minutes out of your holiday schedule and try this with your code. It’s a gift we will definitely appreciate.

jQuery 1.9 has removed many of the items we deprecated during the last few versions of jQuery. For that reason, we’re introducing the jQuery Migrate plugin. This plugin restores several of the deprecated and removed features so that existing code can run, without changing the code. However, it’s intended as a short-term stopgap and shouldn’t be used for new work. To make migration easier, the development version (linked below) also provides browser console warnings to let you know which obsolete features the code is still using. See the plugin documentation for a list of messages you may see.

To test, we recommend that you start with the jQuery Migrate plugin since it will warn you about any deprecated features the code may depend on. Just include these two script tags in your code, replacing your existing jQuery script include:

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

Be sure to update to the most recent versions of jQuery UI and jQuery Mobile if you are also using them.

If the browser’s console does not show any “JQMIGRATE” warning messages generated by the jQuery Migrate plugin, try removing the jquery-migrate include and try jQuery 1.9 in all its squeaky-clean glory. If you have questions, feedback, or complaints about the beta that aren’t specifically bugs, let us know in the jQuery Forum.

Issues regarding the migration plugin not discussed below or in the upgrade guide can be reported at the jQuery Migrate Issue tracker; include a test case that we can use to diagnose the problem. The best way to do that is create a simple test at jsFiddle.net or jsbin.com. You can this jsFiddle tempate or jsbin template as a starting point; they already contain links to the work-in-progress versions of both jQuery and the jQuery Migrate plugin. Add your code there and post a link to it with your bug report.

If you’re seeing problems after fixing any migration issues, removing jQuery Migrate, and using the 1.9 beta by itself, you can report them at the main jQuery core bug tracker. A test case is essential here as well so that we can analyze the problem. Again, if you have questions, feedback, or complaints about the beta that aren’t specifically bug reports, use the jQuery Forum.

What’s New

The majority of work in 1.9 has revolved around API cleanup. Changes most likely to affect existing code are listed in the jQuery 1.9 Upgrade Guide, and these changes will also carry over to 2.0. The jQuery Migrate plugin will identify many of these issues for you automatically, so it’s good to use the plugin in your initial testing to see if it identifies anything that needs to be changed.

We couldn’t let a version like this escape without adding at least one new feature; it’s a good one.

$(element).css([ name1, name2 … ]): This is a new getter that retrieves multiple CSS properties for the first element in a collection and returns them as an object with properties. In addition to the shorter code, this signature provides up to 25 percent better performance because it can use the same return value from the browser’s `.getComputedStyle()` method rather calling the method for each css property. Typical use might be like this:

var dims = $("#box").css([ "width", "height", "backgroundColor" ]);
//  { width: "10px", height: "20px", backgroundColor: "#D00DAD" }

Finally, no major version would be complete without fixes for a variety of bugs and peculiar edge cases that you’ve discovered and reported on the bug tracker. Those, along with all the other modifications, are all cataloged in the changelog below.

How It’s Made

Possibly the most exciting news of this beta is that so many contributors — new and veteran — worked to make jQuery better. Our first jQuery Developer Summit in October brought in some incredibly skilled developers that we hope will continue to stay with us, and several new contributors dared to tackle bugs that have been open for more than a year! If you’re interested, you can help out too.

Let’s give a round of applause to the people who contributed their code gifts to this 1.9 beta: Akintayo Akinwunmi, Alexander Farkas, Allen J Schmidt Jr, Ben Truyman, Bennett Sorbo, Callum Macrae, Carl Danley, Corey Frang, Daniel Gálvez, Dan Morgan, David Bonner, David Fox, Devin Cooper, Elijah Manor, Erick Ruiz de Chavez, Greg Lavallee, Ismail Khair, James Huston, Jay Merrifield, Jonathan Sampson, Julian Aubourg, Marcel Greter, Matt Farmer, Matthias Jäggli, Mike Petrovich, Mike Sherov, Oleg Gaidarenko, Paul Ramos, Richard Gibson, Rick Waldron, Rod Vagg, Roland Eckl, Sai Wong, Scott González, Timmy Willison, Timo Tijhof, Tom Fuertes, and Yi Ming He. If you happen to see them under the mistletoe … well, you know what to do.

jQuery 1.9 Beta 1 Change Log

Ajax

  • #12004: Rename ajax.type to ajax.method
  • #12550: jQuery Ajax cache=false doesn't always work

Attributes

  • #10299: hrefNormalized === false also needs a propHook
  • #12048: [IE6/7/8] xml set attribute
  • #12584: jQuery wrongly serializes select with one disabled option
  • #12600: jQuery('select').is('[value="value"]') works inconsistently depending on number of elements returned
  • #13011: Setting type attribute on an input doesn't work as intended

Build

  • #12254: Reflected XSS
  • #12490: Move submodule update process to grunt
  • #12725: Avoid localized UTF-8 characters in intro.js @DATE
  • #13044: Execute all QUnit modules in TestSwarm
  • #13064: Improve test suite fixture cleanup

Core

  • #9469: Remove semi-functional .selector calculation from .pushStack()
  • #9904: Move deprecated functionality to compatibility plugin
  • #10417: jQuery.later
  • #11290: selector interpreted as HTML
  • #11737: Remove jQuery.sub
  • #12107: Change proxy to allow arguments currying without overwriting context
  • #12134: implement HTML5 compilant form data construction into $.fn.serialzeArray
  • #12191: jQuery.type() should return "error" for native ECMAScript Error objects
  • #12519: Public API methods should not have private arguments
  • #12840: Remove (private) parameter "pass" from jQuery.attr and jQuery.access
  • #13021: each() cannot work well with a literal object who has a length member

Css

  • #11938: jQuery.css should accept an array to get multiple properties
  • #12990: 'px' automatically added to column-count css property

Data

  • #10544: Remove ALL special meanings of "." in keys for $.fn.data

Deferred

  • #11405: deferred.notify() invokes progressCallbacks with deferred as context

Effects

  • #12803: Smarter hook point for jQuery.timer

Event

  • #3827: Checkbox state inconsistent in click event handler
  • #12061: $(window).beforeunload() clobbers previous handler and return values
  • #12518: Don't use offsetWidth in jQuery.event.trigger()
  • #12610: jQuery.event.dispatch should remove window.event
  • #12736: Move pseudo:hover to jquery-compat / deprecated.js
  • #12739: Name: Passing in an Event to trigger strips namespace
  • #12827: Remove "exclusive" events
  • #12828: Remove event properties: attrChange attrName relatedNode srcElement

Manipulation

  • #4087: insertAfter, insertBefore, etc do not work when destination is original element
  • #9646: IE7: Cloning of form-elements and changing their names also changes the name of the elements that are cloned.
  • #10470: wrap() evaluates scripts
  • #11226: .after and .before returns incorrect data for $('not_existing_element')
  • #11230: .appendTo .prependTo .insertAfter .insertBefore returns incorrect data for $('not_existing_element')
  • #11280: appending elements to an object element fails in IE &lt; 9
  • #11795: Resolve script manipulation/execution inconsistencies
  • #12120: Inconsistency of .end() with respect to .after()
  • #12392: Elements created from HTML strings have a parentNode
  • #12449: replaceWith() doesn't clone elements where required
  • #12503: before/after will choke if collection has not first disconnected node
  • #12777: Applets don't work when appended on IE
  • #12957: Improve wrapMap
  • #13013: Move jQuery.buildFragment() to compat plugin
  • #13019: New pre-1.9 .replaceWith() behavior leaks data and events

Misc

  • #12758: Make sure Summit new authors are credited

Offset

  • #6446: Mobile Safari 4.0.4: $.offset.top() reports wrong position after scroll

Selector

  • #11115: ".is()" and ".filter()" disagree on attribute selector "[checked]"
  • #12856: Syntax error, unrecognized expression in jquery 1.8+

Support

  • #12869: Support tests affect page layout in IE8/9/10 running in IE7 mode

Traversing

  • #12009: jQueryObject.find(element) corrupts the stack
  • #12816: .find can return elements in the wrong order

NOTE: Please do not report bugs or other problems via blog comments!

jQuery Color 2.1.1 Released

Posted November 23rd, 2012 by Corey Frang

Just a quick announcement: jQuery Color 2.1.1 is now released! This adds a few bug fixes to the 2.1.0 release and I would suggest upgrading as soon as possible to avoid encountering these bugs.

Changelog

  • Ensure white and black both have a saturation of 0 to keep them in greyscale color space.
  • Add support for ‘.25′ instead of ’0.25′ for alpha string parsing

Download

Thanks!

Special thanks going out to Mike Sherov, Ben Olson, Dmitry, and antoniojrod for helping with this release!

Issues

As always, if you encounter any issues, please do not post replys on this blog post, instead visit jquery-color issues on github.

jQuery 1.8.3 Released

Posted November 13th, 2012 by dmethvin

Woo hoo, Thanksgiving arrived early this year! jQuery 1.8.3 is available for download. You can get it here:

We’ve notified the Google and Microsoft CDNs as well; we trust they will endeavor to post these files tout de suite. The complete change log for jQuery 1.8.3 is below. It’s a rather modest list, but we did nail a few important bugs and regressions.

The team is already hard at work on jQuery 1.9 and would like to squash as many bugs as possible. To report a problem, please post a bug report and be sure to include a test case from jsfiddle.net or jsbin.com. Also try our work-in-progress build at http://code.jquery.com/jquery-git.js to see if it’s already fixed.

Many thanks to the patch contributors for this version; ye shall know them by their GitHub handles: gnarf37, timmywil, gibson042, rwldrn, joyvuu-dave, jaubourg, staabm, and sindresorhus. In addition, we thank all the community members who took the time to contribute quality bug reports with test cases. Your initial groundwork makes it possible for us to find and fix bugs.

jQuery 1.8.3 Change Log

Ajax

  • #12583: IE8 HTML bug (Chinese translation)
  • #12635: jquery 1.8.2 fails ajax calls in IE9 because it assumes cross domain when default port is in ajax url

Attributes

  • #10943: JQuery 1.7.1 does not properly set tabindex property on cloned element in IE7

Core

  • #12690: Minimum JS File Contains non-ASCII Character

Css

  • #10227: $('body').show() does'nt work if body style is set to display:none
  • #12537: element.css('filter') returns undefined in IE9

Deferred

  • #12665: Callbacks objects with "unique" flag will iterate over a function's methods when it is added a second time

Effects

  • #8685: Animations should keep track of animation state in order to properly address stacked animations
  • #12497: jQuery 1.8.1 transitions crashing android 2.3.4 browser
  • #12837: All animations break after zooming a lightbox on the iPad

Selector

  • #12643: Upgrade from 1.3.2 to 1.8.2 gives an Uncaught TypeError
  • #12648: Can not correctly detect focus for DIVs with contenteditable in Chrome and Safari

Support

  • #12357: jQuery 1.8.0 Not parseable by XUL Runner Applications

jQuery Developer Summit Recap

Posted October 29th, 2012 by Adam J. Sontag

With much of the East Coast bracing for the impact of Hurricane Sandy, now’s certainly a good time to take a look back on some sunnier times. Two weeks ago today, the jQuery Foundation held the first-ever jQuery Developer Summit at the Aol Campus in Dulles, Va. After a brief morning overview of our major tools and processes, over 120 team and community members set to work on nearly every aspect of our projects. We divided into 18 teams and focused on everything from triaging and fixing bugs and documentation for jQuery Core, UI, and Mobile, to working on design, implementation and deployment of our entire network of sites, to improving our automated testing and gathering and analysis of metrics on how people use our libraries and websites.

In addition to closing (and opening) hundreds of issues and tickets, and making hundreds of commits to repositories across our entire organization, it seemed that everyone in attendance, from grizzled old hands to greenhorn contributors, learned a lot. We were happy to celebrate a lot of firsts, whether it was somebody’s first commit on a jQuery repository, or their first git commit, period. Of course, not everything went off without a hitch, and we’ve been gathering feedback and figuring out how we can do even better next time.

What that means, of course, is that there will be a next time!  With such an incredible energy in the room for the two days, and a new group of contributors digging in on all of our projects, we’re certainly looking forward to another go-round. Watch this space and follow @jqcon for updates on the Developer Summit and all our other events. In the meantime, check out these recaps from Andy Couch and Carl Danley, and photos from Bowling for jQuery!

And finally, we’d like to extend a hearty thanks to each and every one of you who joined us for two days to help out and participate, we could not have done it without you! Thank you!

jQuery 1.8.2 Released

Posted September 20th, 2012 by dmethvin

We’re pleased to announce that jQuery 1.8.2 is available! This version fixes several bugs and performance regressions reported from the past couple of releases, and we think the 1.8 line is pretty solid at this point. The only way to know for sure that it works with your code is to test it–so please do!

As always, we have put out the jQuery-shaped signal lights; the master control centers at the Google and Microsoft CDNs are on high alert and will soon post these files. For immediate relief, please use the copies above. If you find a problem, please post a bug report and be sure to include a test case from jsfiddle.net or jsbin.com.

The complete change log for jQuery 1.8.2 is below. If this is your first upgrade to the 1.8 line, be sure to read the blog entries for 1.8.0 and 1.8.1 to see what’s changed.

Many thanks to the patch contributors for this version; ye shall know them by their GitHub handles: timmywil, gibson042, rwldrn, joyvuu-dave, jaubourg, staabm, and sindresorhus. In addition, we thank all the community members who took the time to contribute quality bug reports with test cases. Your initial groundwork makes it possible for us to find and fix bugs.

jQuery 1.8.2 Change Log

Deferred

  • #12521: Deferred.promise( target) only works fine when typeof( target)=='object'

Event

  • #12423: jQuery breaks with Comcast Protection Guard and any anti-keylogging protection software on IE7+
  • #12436: Performance degradation with delegate events and pseudo-classes

Misc

  • #12229: Some inconsistencies/optimizations

Offset

  • #12534: .offset() throws an error on BlackBerry5 and iOS3
  • #12536: Make .offset() calc less wrong on browsers w/o getBoundingClientRect

Selector

  • #12303: Attribute selector fails if the attribute value contains :first :last
  • #12337: :nth-child selector not accurate after new child element added
  • #12361: seleter has bug
  • #12448: :contains() edge case throwing an error
  • #12492: In textarea focus event handler, $(this).is(':focus') == false in Chrome & Safari
  • #12523: JQuery renders line breaks as text nodes
  • #12526: :last selector fails to find a match
  • #12541: 1.8.0 and 1.8.1: Double :not() selector fails in IE6/7
  • #12572: :contains breaks searching iframes v1.8

Traversing

  • #12474: Using find on a collection with append does not return the correct elements

jQuery UK 2013

Posted September 19th, 2012 by Adam J. Sontag

jQuery UK is back for 2013!

The jQuery Foundation is pleased to announce that White October are organising another jQuery UK  conference in Oxford, UK on the 19th of April 2013.

There is a call for papers and suggestions for speakers are also welcome. So if you want to take part, or want to see someone at jQuery UK you know what to do.

A very small number of tickets are on sale until the call for papers finishes on the 11th of October for a “blind bird” price of £130 + VAT.

The full speaker lineup should be announced winter 2012 and the early bird tickets will go on sale at the same time for £160 + VAT.

We’ve also listed it on Lanyrd.com if you’d like to follow along there!

jQuery Licensing Changes

Posted September 10th, 2012 by dmethvin

Some important changes have occurred in the latest releases of several jQuery projects such as core, UI, Mobile, Sizzle, and QUnit. You may not have noticed them because they didn’t really change the actual code, documentation, or functionality. Instead, these changes were designed to clarify the ownership and licensing of the software. If you’re not a lawyer, most of this won’t make a lot of difference to you, but it’s important to us.

One simplification we made was to remove the GNU General Public License (GPL), leaving only the MIT License. Having just one license option makes things easier for the Foundation to manage and eliminates confusion that existed about the Foundation’s previous dual-licensing policy. However, this doesn’t affect your ability to use any of the Foundation’s projects. You are still free to take a jQuery Foundation project, make changes, and re-license it under the GPL if your situation makes that desirable. The Free Software Foundation site confirms that the MIT License is a “lax, permissive non-copyleft free software license, compatible with the GNU GPL.”

Over time, more than 500 people have contributed to the projects currently managed by the jQuery Foundation. We’re working hard to make sure that everyone who has contributed gets the credit they deserve. Many of the projects now have an AUTHORS.txt file in their root that list all the major contributors in chronological order. Scott González did a lot of the heavy lifting to get the author lists in order, and created useful tools so that we can keep them that way. Of course, you can always see the author of a specific change to a project by looking at the commit in the git log or on GitHub.

It’s important to the jQuery Foundation that licensing of the code and documentation is clear, so the community can continue to use it without interruption. Doing so requires a “paper trail” so it is unambiguous that the Foundation has permission to use the code and the contributor had the ability to contribute that code in the first place. For an example of the latter, think about the situation where an employee works on jQuery Foundation projects at the company office; their employer might claim they own that work and the employee had no right to license it to the Foundation.

To make the licensing clear, contributors are asked to sign a Contributor License Agreement (CLA). jQuery team members will sign a Copyright Assignment Agreement (CAA) which actually assigns the copyright to the jQuery Foundation. For more discussion of what a CLA or CAA does, see this article.

All of these changes guarantee that the jQuery Foundation’s open source projects will be dependable resources for developers and businesses. They also ensure that when you contribute, you’ll get some recognition for the work that you’ve done. So with all that legal stuff out of the way, come help us build the jQuery Foundation projects!

Help Us Money-ify UglifyJS 2.0

Posted September 6th, 2012 by Adam J. Sontag

In nature, an ecosystem consists of the organisms, raw materials, and all of the complex interactions that shape their shared environment. The open source ecosystem is no different. Each project has its niche, and any package that is a dependency of course has dependencies of its own. jQuery is used on millions of websites, but we wouldn’t be there without the excellent tools on which we rely to build, test, and distribute our code.

One such tool is Mihai Bazon’s excellent UglifyJS. We’ve been using Uglify to compress jQuery, jQuery UI, and jQuery Mobile for nearly two years now, so if you’ve used any of our minified builds recently, you’ve benefited from Mihai’s work. Recently, he began work on UglifyJS 2.0, which will feature even better compression, support for source maps, and a command line utility. He also announced a Pledgie campaign to support his efforts.

Here at the Foundation, our goal is not just to improve libraries that start with “jQuery,” but rather the entire JavaScript ecosystem in which we all participate. That’s why we’re happy today to announce some exciting news – and to issue a challenge!

Help build UglifyJS 2.0!
Click here to lend your support to: Funding development of UglifyJS 2.0 and make a donation at www.pledgie.com !

We’ve just kicked in 500€ to the campaign to recognize his work so far, but there’s more we all can do. If the community can help us to help Mihai reach his goal of 3,000€  by the end of September, we’ll donate an additional 500€ to the UglifyJS 2.0 project!

We’re looking forward to keeping you posted on the progress here, and participating in similar endeavors in the future to help improve the tools we use each day. In the meantime, thanks for considering a donation (even a small one), and if we haven’t convinced you yet, perhaps this final exhortation will: THINK OF THE BYTES!

Update (5:30): Awesome! The Dojo Foundation has matched our donation!

jQuery Developer Summit 2012

Posted August 31st, 2012 by Adam J. Sontag

Over the last eight months at the Foundation, we have been working to expand both the reach and breadth of our events, and we’re excited today to announce the inaugural jQuery Developer Summit, to be held October 15th and 16th, 2012 at the Aol Campus in Dulles, VA.

The Developer Summit will be a departure from our traditional events. Instead of two days of speakers and slide decks, we’re going to spend a morning giving you a rundown of how jQuery works, from internals of jQuery Core, to how we build and test the libraries, to how we manage our websites. Then we’ll break apart into teams, and spend the rest of our time working together to collaborate on the projects and tools we all use every day.

As this is a more intimate event (and because it’s our first time trying it), we can only accomodate about 150 people. In order to get the right mix of skills and experiences into the room, it won’t be a simple first-come, first-served process. Instead, we’ll be accepting and reviewing submissions to this application on a rolling basis from August 31st until September 7th. In other words, we have a lot of different bases we’d want to cover, so we can’t have 100 people showing up who just want to fix edge case bugs in Quirks mode!

The focus here is on collaboration, growing as an open-source developer, and having fun! If this sounds like your cup of tea, read more about the Developer Summmit now, and consider applying! And of course, if you have any questions, please don’t hesitate to ask!

jQuery 1.8.1 Released

Posted August 30th, 2012 by dmethvin

It’s been a frantic but productive few weeks, and the jQuery core team is pleased to announce that jQuery 1.8.1 is released! This version fixes the issues reported by the community following the final release of 1.8.0. Here are the files, ready for you to use:

The Google and Microsoft CDNs will also have copies available soon.

The final set of bugs that were fixed are listed below. Don’t forget, folks, we love to hear about bugs in the betas and release candidates too! You don’t have to wait for a final release to test with your code. The earlier we can fix these bugs, the smoother things go for both the team and the jQuery community.

Use jQuery UI 1.8.23 and jQuery Mobile 1.1.1 or later for best compatibility with jQuery core 1.8.1.

Don’t use Quirks mode! jQuery has never supported Quirks mode and we do not perform any testing in Quirks. This can affect values like $("window").height(), and the jQuery 1.8 Quirks mode results did change in order to support some modern browser features. The majority of problem cases we’ve seen are from developers that wanted to be in Standards mode but had an invalid doctype or extraneous markup before their <html> tag. When in doubt, use the simple and short <!doctype html>.

Sizzle’s custom pseudo-selectors that take arguments have changed, but jQuery 1.8.1 provides a compatibility shim for older code. Neither Sizzle nor jQuery documented how these worked before; there is now official documentation for Sizzle. Look there for an example of best practice on writing custom pseudo-selectors that work with all versions of jQuery.

Many thanks to the team and community members who contributed patches for this release: Timmy Willison, Mike Sherov, Elijah Manor, Mike Pennisi, Richard Gibson, Corey Frang, Mathias Bynens, Oleg Gaidarenko, Nikita Govorov, Julian Aubourg, and Rick Waldron.

We’re also very appreciative to those of you who took the time to create good bug reports for jQuery 1.8.1. In the highly unlikely event we somehow managed to leave any bugs in this release, please do let us know. First check the bug tracker to see if it has already been reported. If not, create a test case using jsFiddle.net or jsbin.com with the least possible code that it takes to demonstrate the problem.

jQuery 1.8.1 Change Log

Ajax

  • #12233: jQuery.post() raises "RangeError: Maximum call stack size exceeded"
  • #12234: the .load() method,when params is null, the ajax type will be "POST", but not be "GET"

Core

  • #12282: 1.8.0 regression – document ready is fired too early on IE 9/10
  • #12329: event.js still has a reference to bindReady
  • #12350: jQuery.trim should remove byte-order-mark (BOM) characters
  • #12370: jquery android 2.1-update1 problem

Css

  • #12235: getComputedStyle is used without namespace
  • #12313: .height() and .width() no longer fall back to CSS if offsetWidth is undefined.
  • #12324: cssNormalTransform can produce wrong values

Data

  • #10863: .data method does not return an object if the JSON string contains newlines.

Dimensions

  • #12283: jQuery 1.8 outerHeight is returning undefined instead of null

Effects

  • #12273: animate fails with 0 duration

Event

  • #12149: 'change' event handler leaks in IE7/8
  • #12383: jQuery.on() selector should only apply to descendants of the element

Manipulation

  • #12346: fn.append not working correctly
  • #12384: .after fails with table rows in IE9

Queue

  • #12278: .promise(type) not working for non-default queue

Selector

  • #12205: Miscellaneous pseudo selector issues
  • #12237: Having child selector and multiple :not with :visible does not work any more
  • #12241: Passing a negative index for :eq throws a syntax error.
  • #12285: Selector with :not(:first) isn't working since 1.8
  • #12292: Invalid selectors can cause a subsequent valid selector not to work
  • #12303: Attribute selector fails if the attribute value contains :first :last
  • #12311: jQuery 1.8 and .is(":visible")
  • #12314: $.contains fatal error in IE9 when 2nd parameter is null
  • #12359: 1.8.0 creating invalid tag/attribute when loading the library
  • #12369: ajax, use find method for read xml
  • #12403: Selector "> li > :first-child,> :not(li):even" fails in old IE
  • #12409: Back-compat issue with custom pseudo selectors
  • #12412: Sizzle regression ":not([data-role='list-divider']):not(:hidden)"
  • #12419: Composite selector fails if id attribute contains dot.

Support

  • #12333: $.browser.webkit (undefined) -> $.browser.chrome