jQuery UI 1.10 Upgrade Guide
- Overview
- API Redesigns
- Core
- Accordion
- Added ability to add/remove panels
- Removed changestart event; use beforeActivate
- Removed change event; use activate
- Removed resize method; use refresh
- Removed animated option; use animate
- Removed icons.headerSelected option; use icons.activeHeader
- Removed autoHeight, clearStyle, and fillSpace options; use heightStyle
- Removed activate method; use active option
- Removed navigation and navigationFilter options
- Removed support for non-number/falsey values for active option
- Deprecated content property in create event; renamed to panel
- Autocomplete
- Dialog
- Position
- Progressbar
- Resizable
- Spinner
- Tabs
- Removed fx option; use show and hide
- Removed ajaxOptions and cache options; use beforeLoad event
- Removed url method; use aria-controls attribute
- Removed use of title attribute; use aria-controls
- Removed abort method
- Removed spinner option
- Removed selected option; use active
- Removed select event; use beforeActivate
- Removed show event; use activate
- Removed select method; use active option
- Removed add and remove methods; use refresh
- Removed idPrefix, tabTemplate, and panelTemplate options; use refresh method
- Removed enable and disable events
- Removed length method
- Removed cookie option
- Changed load event to pass jQuery objects
- Tooltip
- Widget
- Effects
link Overview
This guide will assist in upgrading from jQuery UI 1.9.x to jQuery UI 1.10.x. All changes are listed below, organized by plugin, along with how to upgrade your code to work with jQuery UI 1.10.
link API Redesigns
jQuery UI 1.10 introduces API redesigns for Dialog and Progressbar.
You can read about the API redesign process on the
jQuery UI Blog.
Although the redesigns introduce breaking changes,
1.10 maintains full compatibility with the 1.9 API by default.
This is accomplished by rebuilding the 1.9 API on top of the 1.10 API. The
default behavior for all 1.10 releases will be to simultaneously use the 1.9
and 1.10 APIs, deferring to the 1.9 API if there is a conflict. If you would like
to load just the 1.10 API without the 1.9 API, you can set the $.uiBackCompat
flag to false.
|
1
2
3
|
|
This will prevent the initialization of the back-compat layer, allowing you to use the 1.10 API in cases where there is a conflict with the 1.9 API.
link Preparing for jQuery UI 1.11
The API redesigns deprecate some functionality, which will be removed in 1.11.
You don't have to wait for the 1.11.0 release in order to find out if your code
will work when the 1.9 APIs are removed. You can use the $.uiBackCompat flag
to test this with any 1.10 release.
If you find a regression from the 1.9 API, please report it in the
bug tracker. Even though the 1.9 API is
deprecated, it's important for 1.10 releases not to regress so that users are
encouraged to upgrade even if they're not ready to use the new APIs. Note that
most 1.8 APIs which were deprecated in 1.9 were removed in 1.10 and will not
exist, regardless of the $.uiBackCompat flag.
link Removed support for IE6
IE6 usage has dropped to a low enough point that jQuery UI no longer finds it necessary to support. As of 1.10.0, some portions of jQuery UI may not work properly in IE6. If you need to continue to support IE6, use the latest jQuery UI 1.9 release.
link Improved download builder
The download builder once again supports downloading two versions. You can now download the latest stable release and one major version back. Also, as a result of GitHub removing support for uploads, we now host the download zips for all versions at https://jqueryui.com/download/all/.
link Core
link Removed $.ui.isOver() and $.ui.isOverAxis() methods
(#8891)
The $.ui.isOver() and $.ui.isOverAxis() methods were written for specific
plugins and had less-than-obvious APIs. They have been deprecated for a while,
and as such have been removed.
link Removed $.ui.contains() method; use $.contains()
(#8902)
The $.ui.contains() method has been removed in favor of $.contains().
See the 1.9 deprecation notice for full details.
link Accordion
link Added ability to add/remove panels
(#4672)
The refresh method will now recognize panels that have been added or removed.
This brings accordion in line with tabs and other widgets that parse the markup
to find changes.
|
1
2
3
4
5
6
7
8
9
|
|
link Removed changestart event; use beforeActivate
(#6841)
The changestart event has been removed in favor of beforeActivate.
See the 1.9 deprecation notice for full details.
link Removed change event; use activate
(#6843)
The change event has been removed in favor of activate.
See the 1.9 deprecation notice for full details.
link Removed resize method; use refresh
(#6839)
The resize method has been removed in favor of refresh.
See the 1.9 deprecation notice for full details.
link Removed animated option; use animate
(#8601)
The animated option has been removed in favor of animate.
See the 1.9 deprecation notice for full details.
link Removed icons.headerSelected option; use icons.activeHeader
(#6835)
The icons.headerSelected option has been removed in favor of icons.activeHeader.
See the 1.9 deprecation notice for full details.
link Removed autoHeight, clearStyle, and fillSpace options; use heightStyle
(#5868)
(#5872)
The autoHeight, clearStyle, and fillSpace options have been removed in favor of heightStyle.
See the 1.9 deprecation notice for full details.
link Removed activate method; use active option
(#6837)
The activate method has been removed in favor of the active option.
See the 1.9 deprecation notice for full details.
link Removed navigation and navigationFilter options
(#5870)
The navigation and navigationFilter options have been removed.
See the 1.9 deprecation notice for full details.
link Removed support for non-number/falsey values for active option
(#6853)
The active option must be set to a number, or false to collapse. Negative numbers will now select panels starting from the last panel, similar to .eq().
See the 1.9 deprecation notice for full details.
link Deprecated content property in create event; renamed to panel
(#8998)
The content property in the create event has been renamed to panel for
consistency with other events. You should replace all uses of the content
property with the panel property.
Old API:
|
1
2
3
4
5
6
7
8
|
|
New API:
|
1
2
3
4
5
6
7
8
9
|
|
Note: This change was originally missed during the API redesign and did not
occur until 1.10.1. As a result, the old API is not hidden behind the
$.uiBackCompat flag and the new API is not available in 1.10.0.
The content property will be removed in 1.11.
link Autocomplete
link Removed item.autocomplete data; use ui-autocomplete-item
(#8156)
Each menu item stores its source object using .data(). This data is no longer
stored with a key of item.autocomplete, but rather ui-autocomplete-item.
See the 1.9 deprecation notice for full details.
link Dialog
link Added appendTo option
(#7948)
Previously, dialogs had always been appended to the body to ensure they were
the last element in the DOM to avoid conflicts with other stacking contexts.
However, in order to allow more flexibility and simplify the stacking logic,
an appendTo option has been added which defaults to the body. Check out the
API documentation for more
information.
link Added ability to specify which element to focus on open
(#4731)
When a dialog opens, it gains focus so that the user may immediately start
interacting with it. This also allows assistive technologies, such as screen
readers, to announce the dialog. The logic for which element gains focus has
traditionally been whichever element is found first in the following categories:
tabbable elements within the content area, tabbable elements within the button
pane, the close button, and finally the dialog itself as a fallback. Starting
with 1.10.0, if there is an element inside the content area with the autofocus
attribute, that element will gain focus; if there is none, then the previous
logic will be used.
link Added support for icons in buttons
(#6830)
The buttons option now supports two more properties to control the use of icons.
An icons hash may be provided, with primary and/or secondary properties,
and the showText property may be set to false to hide text when using an icon.
For more information on using icons, see the
button documentation.
link Restore focus on close
(#8730) In addition to having more control over which element gains focus when the dialog opens, the dialog will also remember which element had focus outside of the dialog. When the dialog is closed, focus will be restored to the element that had focus immediately before the dialog opened. This will put the user back in the same state they were in, again resulting in improved usability and accessibility.
link Deprecated array and string notations for position option
(#8824)
Over time, the dialog widget accrued a few different ways to specify the opening
position. You could specify a string, such as "left center"; or an array of pixels,
such as [ 200, 100 ]; or an object that would get passed to the
position utility. Since we have standardized
on using the position utility in all widgets, we have deprecated the string and
array notations.
Old API:
|
1
2
3
|
|
New API:
|
1
2
3
4
5
6
|
|
Old API:
|
1
2
3
|
|
New API:
|
1
2
3
4
5
6
|
|
link Removed stack option
(#8722)
Dialogs previously supported a stack option, which determined whether dialogs
should move to the top when focused. As this should always be the case, the
option has been removed.
link Removed zIndex option
(#8729)
Similar to the stack option, the zIndex option is unnecessary with a proper
stacking implementation. The z-index is defined in CSS and stacking is now
controlled by ensuring the focused dialog is the last "stacking" element in its
parent.
link Changed title option from HTML to text
(#6016)
Dialog titles are controlled either via the title option or the title
attribute on the content element. The title has previously been set as HTML,
but since titles are generally plain text, this could easily cause a scripting
vulnerability for users who don't realize the value is being set as HTML. As a
result, titles are now set as text. If you need to add custom formatting to your
dialog titles, you can override the _title() method on the dialog.
link Position
link Removed offset option; use my or at
(#6982)
The offset option has been removed in favor of providing offset information in
my or at.
See the 1.9 deprecation notice for full details.
link Progressbar
link Added support for indeterminate progressbars
(#7624)
The progressbar widget now supports an indeterminate state for situations where
the current status of an action cannot be determined. Simply set the value
option to false to create an indeterminate progressbar. You can seamlessly
transition from an indeterminate progressbar to a determinate progressbar just
by changing the value from false to a number.
link Resizable
link Added support for complex markup in handles
(#8756) While most users let the resizable widget generate handles automatically, it is possible to create your own handles in the markup prior to initialization. However, until now the handles were required to be a single element. As of 1.10.0, custom handles can contain complex markup, nesting elements as deep as you wish within the handle.
link Spinner
link Trigger all events for programmatic steps
(#8901)
In 1.9.x, the spinner widget did not trigger start, spin, or stop events
when programmatically stepping via the stepUp(), stepDown(), pageUp(), or
pageDown() methods (only change was triggered). Starting with 1.10.0, all
events are triggered, matching the behavior of a user-initiated step.
link Tabs
link Removed fx option; use show and hide
(#8320)
The fx option has been removed in favor of show and hide.
See the 1.9 deprecation notice for full details.
link Removed ajaxOptions and cache options; use beforeLoad event
(#7147)
The ajaxOptions and cache options have been removed in favor of the
beforeLoad event.
See the 1.9 deprecation notice for full details.
link Removed url method; use aria-controls attribute
(#7148)
The url method has been removed in favor of the aria-controls attribute.
See the 1.9 deprecation notice for full details.
link Removed use of title attribute; use aria-controls
(#7149)
Use of the title attribute to specify a tab panel has been removed in favor of
aria-controls.
See the 1.9 deprecation notice for full details.
link Removed abort method
(#7150)
The abort method was removed in favor of storing a reference to the jqXHR
object in the beforeLoad event.
See the 1.9 deprecation notice for full details.
link Removed spinner option
(#7151)
The spinner options has been removed.
See the 1.9 deprecation notice for full details.
link Removed selected option; use active
(#7152)
The selected option has been removed in favor of active.
See the 1.9 deprecation notice for full details.
link Removed select event; use beforeActivate
(#7154)
The select event has been removed in favor of beforeActivate.
See the 1.9 deprecation notice for full details.
link Removed show event; use activate
(#7155)
The show event has been removed in favor of activate.
See the 1.9 deprecation notice for full details.
link Removed select method; use active option
(#7156)
The select event has been removed in favor of the active option.
See the 1.9 deprecation notice for full details.
link Removed add and remove methods; use refresh
(#7158)
The add and remove methods have been removed in favor of refresh.
See the 1.9 deprecation notice for full details.
link Removed idPrefix, tabTemplate, and panelTemplate options; use refresh method
(#7157)
The idPrefix, tabTemplate, and panelTemplate options have been removed in favor of the refresh method.
See the 1.9 deprecation notice for full details.
link Removed enable and disable events
(#7160)
The enable and disable event have been removed.
See the 1.9 deprecation notice for full details.
link Removed length method
(#7161)
The length method has been removed.
See the 1.9 deprecation notice for full details.
link Removed cookie option
(#7162)
The cookie option has been removed.
See the 1.9 deprecation notice for full details.
link Changed load event to pass jQuery objects
(#8731)
The load event now passes jQuery objects instead of DOM elements for consistency
with other plugins in jQuery UI.
Old API:
|
1
2
3
4
5
|
|
New API:
|
1
2
3
4
5
|
|
link Tooltip
link Changed default content option from HTML to text
(#8861)
The default content option uses the title attribute as the content for the
tooltip. Previously the value was set as HTML, but it is now set as text. This
fixes a security vulnerability as well as bringing the functionality in line
with how the attribute is meant to be used.
link Widget
link Removed use of metadata plugin
(#7192) Use of the metadata plugin for widget options has been removed. See the 1.9 deprecation notice for full details.
link Removed widgetBaseClass property; use widgetFullName
(#8155)
The widgetBaseClass property has been removed in favor of widgetFullName.
See the 1.9 deprecation notice for full details.
link Removed data fallbacks for widget names
(#8801)
Widgets used to store their instances in .data() using just the plugin name as
a key. The instances are now stored using the widget namespace as well. For
example, the dialog widget is now stored in ui-dialog instead of dialog.
See the 1.9 deprecation notice for full details.
link Effects
link Removed support for effects in $.effects[]; use $.effects.effect[]
(#7115)
Support for defining effects directly on $.effects has been removed in favor
of defining effects on $.effects.effect. The API for new effects is slightly
different, so make sure to read
the 1.9 deprecation notice for full details.