What’s New in jQuery UI 1.9

Share this article

After a two and a half year delay, and a lot of hard work, the new 1.9 version of jQuery UI was finally released. jQuery UI 1.9 supports the latest stable release of jQuery all the way back to version 1.6. With many bug fixes and lots of changes, this is a significant step forward for the library.

The State of jQuery UI

I’m excited to tell you about the latest changes, but first let me explain the reasons behind some of them. jQuery UI started as a combination of new and existing plugins collected from different sources. Unfortunately, the downside of this initiative was that each author had his own coding style and design principles, which lead to inconsistency among the plugins and widgets, thus retarding the library’s progress as a whole. Realizing the problem, as of version 1.8, the jQuery UI team tried to change the existing process for building plugins by focusing on more simplified APIs. The main goal for the upcoming 2.0 release is to have a completely redesigned project with a much simpler API, a unified code base, consistency across widgets, better stability, full documentation, and a full test suite for every plugin. And, once the existing plugins have been updated to the new standards, the project will move forward at a much faster pace. Now, let’s discuss the changes in version 1.9.

New Web Site

The first thing you will probably notice is that the jQuery UI web site has been completely redesigned with a new look and feel. Besides the new design, which is much wider and cleaner, the API documentation now includes a lot of information that was missing from the old site. The site is still under development, so expect to see even more content in the future.

New Widgets

Let’s welcome the new Tooltip, Spinner, and Menu widgets to the library. I won’t provide you with any code examples here because there are plenty of demos already on the jQuery UI web site. Just follow the links below to see the widgets in action.

The Tooltip Widget

With the new Tooltip Widget, jQuery UI finally has a built-in tooltip solution. The widget allows you to use static content or remote content loaded via Ajax. You can add custom positioning, and choose what animation to use when the tooltip is shown and/or hidden. Also, with the mouse tracking option set to true the tooltip will stick with the mouse pointer until it moves over the element.

The Spinner Widget

When you are dealing with any kind of numeric input, the Spinner Widget can be your best friend. Values can be manipulated with the mouse’s scroll wheel, or via the keyboard. You can spin values by small or by big increments. For example, the up/down arrow keys can spin a value by one, while the page up/down keys spin the value by ten. Also, by using the Globalize plugin you can configure the widget to work with currencies and dates in different locales. Lastly, the overflow option allows you to restrict the spinner to some range. For example, if you set the range from one to five, then anything above five overflows to zero, and vice versa. This is especially useful when working with dates and time.

The Menu Widget

The Menu Widget can be used for inline and popup menus, or as a base for building more complex menu systems. For example, you can create nested menus with custom positioning. Speaking of menus, two more widgets, Selectmenu and Menubar, are planned for the 1.10 release. You can see the Roadmap for details.

API Redesigns

As previously mentioned, jQuery UI is being refactored to become more consistent and compact. Because of this, many API changes have been made in the new release. Some of the most notable changes are listed below.

The Widget Factory

The 1.9 release adds a lot of functionality to the widget factory, especially related to instantiation and inheritance. Widget developers will find lots of new features and improvements. For more details see Widget.

Widgets and Effects

jQuery UI 1.9 introduces API redesigns for Accordion, Autocomplete, Dialog, Position, Tabs, and Effects. As a whole, the consistency across widgets has been improved. Each individual widget has also seen some improvements. The accordion widget provides better animation support, the tabs widget has better Ajax support, and the position utility offers better collision detection. All effects files have been renamed to match the jquery.ui.*.js naming pattern. For example, jquery.effects.*.js has been renamed to jquery.ui.effect-*.js. Similarly, jquery.effects.core.js has been renamed to jquery.ui.effect.js
. If you’re using individual effect files, you’ll need to update your file references accordingly. Note that only widgets, utilities, and effects are being refactored in version 1.9. All interactions are going to be rewritten for 2.0 so they will be undergoing a different implementation process.

API Compatibility

Although the redesigns introduce changes, 1.9 maintains full compatibility with the 1.8 API. This means that upgrading to 1.9 should not break any existing pages. This is accomplished by rebuilding the 1.8 API on top of the 1.9 API. The default behavior for all 1.9 releases will be to simultaneously use the 1.8 and 1.9 APIs, deferring to the 1.8 API if there is a conflict. Many existing APIs were deprecated in version 1.9. These APIs will be removed in version 1.10. Luckily, you don’t need to wait for the next release to find out if your code will still work once the 1.8 APIs are removed. You can use the $.uiBackCompat flag to disable all deprecated APIs, allowing you to determine if your code is ready for 1.10. The following example disables deprecated APIs by setting $.uiBackCompat to false.
<script src="jquery.js"></script>
<script>$.uiBackCompat = false;</script>
<script src="jquery-ui.js"></script>

Final Words

The Upgrade Guide contains detailed information on upgrading to version 1.9. Don’t be afraid of all these changes. No one is looking forward to refactoring existing code, but the jQuery UI team has put a lot of effort into ensuring a painless transition process.

Frequently Asked Questions (FAQs) about jQuery UI 1.9

What are the new features in jQuery UI 1.9?

jQuery UI 1.9 introduces several new features and enhancements. The most significant one is the introduction of the Tooltip widget, which allows developers to create customizable tooltips. Another notable feature is the Menu widget, which provides a versatile menu system with submenus, checkboxes, and radio buttons. The Spinner widget, which allows for number input with increment and decrement buttons, is also a new addition. Lastly, the version also includes improvements to the existing widgets, such as the addition of the “destroy” method and the “refresh” method.

How can I update to jQuery UI 1.9?

To update to jQuery UI 1.9, you need to download the latest version from the official jQuery UI website. Once downloaded, replace your old jQuery UI files with the new ones in your project directory. Remember to update the script source in your HTML files to point to the new jQuery UI files.

What are the benefits of using jQuery UI 1.9?

jQuery UI 1.9 offers several benefits. It provides a set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. This makes it easier to design and implement complex UI features. The new widgets in version 1.9, such as Tooltip and Menu, provide additional functionality and enhance user experience.

How can I use the new Tooltip widget in jQuery UI 1.9?

The Tooltip widget in jQuery UI 1.9 can be used by selecting an element and calling the tooltip method. You can customize the tooltip by passing options to the tooltip method. For example, you can change the tooltip content, show and hide animations, and events that trigger the tooltip.

What is the purpose of the “destroy” method in jQuery UI 1.9?

The “destroy” method in jQuery UI 1.9 is used to remove any changes made by jQuery UI from the selected elements. This is useful when you want to remove a widget or interaction functionality from an element.

How can I use the new Menu widget in jQuery UI 1.9?

The Menu widget in jQuery UI 1.9 can be used by selecting a list element and calling the menu method. You can customize the menu by passing options to the menu method. For example, you can change the menu items, icons, and events that trigger the menu.

What are the improvements in the existing widgets in jQuery UI 1.9?

jQuery UI 1.9 includes several improvements to the existing widgets. For example, the “destroy” method has been added to all widgets, which removes the widget functionality from an element. The “refresh” method has also been added to some widgets, which updates the widget to reflect any changes in the underlying data.

How can I use the new Spinner widget in jQuery UI 1.9?

The Spinner widget in jQuery UI 1.9 can be used by selecting an input element and calling the spinner method. You can customize the spinner by passing options to the spinner method. For example, you can change the increment and decrement values, and events that trigger the spinner.

What is the purpose of the “refresh” method in jQuery UI 1.9?

The “refresh” method in jQuery UI 1.9 is used to update a widget to reflect any changes in the underlying data. This is useful when the data that a widget is based on changes dynamically.

How can I customize the widgets in jQuery UI 1.9?

The widgets in jQuery UI 1.9 can be customized by passing options to the widget methods. These options allow you to change the behavior and appearance of the widgets. For example, you can change the content of a tooltip, the items in a menu, or the values in a spinner.

Ivaylo GerchevIvaylo Gerchev
View Author

I am a web developer/designer from Bulgaria. My favorite web technologies include SVG, HTML, CSS, Tailwind, JavaScript, Node, Vue, and React. When I'm not programming the Web, I love to program my own reality ;)

jQuery
Share this article
Read Next
7 Easy Ways to Make a Magento 2 Website Faster
7 Easy Ways to Make a Magento 2 Website Faster
Konstantin Gerasimov
Powerful React Form Builders to Consider in 2024
Powerful React Form Builders to Consider in 2024
Femi Akinyemi
Quick Tip: How to Animate Text Gradients and Patterns in CSS
Quick Tip: How to Animate Text Gradients and Patterns in CSS
Ralph Mason
Sending Email Using Node.js
Sending Email Using Node.js
Craig Buckler
Creating a Navbar in React
Creating a Navbar in React
Vidura Senevirathne
A Complete Guide to CSS Logical Properties, with Cheat Sheet
A Complete Guide to CSS Logical Properties, with Cheat Sheet
Ralph Mason
Using JSON Web Tokens with Node.js
Using JSON Web Tokens with Node.js
Lakindu Hewawasam
How to Build a Simple Web Server with Node.js
How to Build a Simple Web Server with Node.js
Chameera Dulanga
Building a Digital Fortress: How to Strengthen DNS Against DDoS Attacks?
Building a Digital Fortress: How to Strengthen DNS Against DDoS Attacks?
Beloslava Petrova
Crafting Interactive Scatter Plots with Plotly
Crafting Interactive Scatter Plots with Plotly
Binara Prabhanga
GenAI: How to Reduce Cost with Prompt Compression Techniques
GenAI: How to Reduce Cost with Prompt Compression Techniques
Suvoraj Biswas
How to Use jQuery’s ajax() Function for Asynchronous HTTP Requests
How to Use jQuery’s ajax() Function for Asynchronous HTTP Requests
Aurelio De RosaMaria Antonietta Perna
Quick Tip: How to Align Column Rows with CSS Subgrid
Quick Tip: How to Align Column Rows with CSS Subgrid
Ralph Mason
15 Top Web Design Tools & Resources To Try in 2024
15 Top Web Design Tools & Resources To Try in 2024
SitePoint Sponsors
7 Simple Rules for Better Data Visualization
7 Simple Rules for Better Data Visualization
Mariia Merkulova
Cloudways Autonomous: Fully-Managed Scalable WordPress Hosting
Cloudways Autonomous: Fully-Managed Scalable WordPress Hosting
SitePoint Team
Best Programming Language for AI
Best Programming Language for AI
Lucero del Alba
Quick Tip: How to Add Gradient Effects and Patterns to Text
Quick Tip: How to Add Gradient Effects and Patterns to Text
Ralph Mason
Logging Made Easy: A Beginner’s Guide to Winston in Node.js
Logging Made Easy: A Beginner’s Guide to Winston in Node.js
Vultr
How to Optimize Website Content for Featured Snippets
How to Optimize Website Content for Featured Snippets
Dipen Visavadiya
Psychology and UX: Decoding the Science Behind User Clicks
Psychology and UX: Decoding the Science Behind User Clicks
Tanya Kumari
Build a Full-stack App with Node.js and htmx
Build a Full-stack App with Node.js and htmx
James Hibbard
Digital Transformation with AI: The Benefits and Challenges
Digital Transformation with AI: The Benefits and Challenges
Priyanka Prajapat
Quick Tip: Creating a Date Picker in React
Quick Tip: Creating a Date Picker in React
Dianne Pena
How to Create Interactive Animations Using React Spring
How to Create Interactive Animations Using React Spring
Yemi Ojedapo
10 Reasons to Love Google Docs
10 Reasons to Love Google Docs
Joshua KrausZain Zaidi
How to Use Magento 2 for International Ecommerce Success
How to Use Magento 2 for International Ecommerce Success
Mitul Patel
5 Exciting New JavaScript Features in 2024
5 Exciting New JavaScript Features in 2024
Olivia GibsonDarren Jones
Tools and Strategies for Efficient Web Project Management
Tools and Strategies for Efficient Web Project Management
Juliet Ofoegbu
Choosing the Best WordPress CRM Plugin for Your Business
Choosing the Best WordPress CRM Plugin for Your Business
Neve Wilkinson
ChatGPT Plugins for Marketing Success
ChatGPT Plugins for Marketing Success
Neil Jordan
Managing Static Files in Django: A Comprehensive Guide
Managing Static Files in Django: A Comprehensive Guide
Kabaki Antony
The Ultimate Guide to Choosing the Best React Website Builder
The Ultimate Guide to Choosing the Best React Website Builder
Dianne Pena
Exploring the Creative Power of CSS Filters and Blending
Exploring the Creative Power of CSS Filters and Blending
Joan Ayebola
How to Use WebSockets in Node.js to Create Real-time Apps
How to Use WebSockets in Node.js to Create Real-time Apps
Craig Buckler
Best Node.js Framework Choices for Modern App Development
Best Node.js Framework Choices for Modern App Development
Dianne Pena
SaaS Boilerplates: What They Are, And 10 of the Best
SaaS Boilerplates: What They Are, And 10 of the Best
Zain Zaidi
Understanding Cookies and Sessions in React
Understanding Cookies and Sessions in React
Blessing Ene Anyebe
Enhanced Internationalization (i18n) in Next.js 14
Enhanced Internationalization (i18n) in Next.js 14
Emmanuel Onyeyaforo
Essential React Native Performance Tips and Tricks
Essential React Native Performance Tips and Tricks
Shaik Mukthahar
How to Use Server-sent Events in Node.js
How to Use Server-sent Events in Node.js
Craig Buckler
Five Simple Ways to Boost a WooCommerce Site’s Performance
Five Simple Ways to Boost a WooCommerce Site’s Performance
Palash Ghosh
Elevate Your Online Store with Top WooCommerce Plugins
Elevate Your Online Store with Top WooCommerce Plugins
Dianne Pena
Unleash Your Website’s Potential: Top 5 SEO Tools of 2024
Unleash Your Website’s Potential: Top 5 SEO Tools of 2024
Dianne Pena
How to Build a Chat Interface using Gradio & Vultr Cloud GPU
How to Build a Chat Interface using Gradio & Vultr Cloud GPU
Vultr
Enhance Your React Apps with ShadCn Utilities and Components
Enhance Your React Apps with ShadCn Utilities and Components
David Jaja
10 Best Create React App Alternatives for Different Use Cases
10 Best Create React App Alternatives for Different Use Cases
Zain Zaidi
Control Lazy Load, Infinite Scroll and Animations in React
Control Lazy Load, Infinite Scroll and Animations in React
Blessing Ene Anyebe
Building a Research Assistant Tool with AI and JavaScript
Building a Research Assistant Tool with AI and JavaScript
Mahmud Adeleye
Understanding React useEffect
Understanding React useEffect
Dianne Pena
Web Design Trends to Watch in 2024
Web Design Trends to Watch in 2024
Juliet Ofoegbu
Building a 3D Card Flip Animation with CSS Houdini
Building a 3D Card Flip Animation with CSS Houdini
Fred Zugs
How to Use ChatGPT in an Unavailable Country
How to Use ChatGPT in an Unavailable Country
Dianne Pena
An Introduction to Node.js Multithreading
An Introduction to Node.js Multithreading
Craig Buckler
How to Boost WordPress Security and Protect Your SEO Ranking
How to Boost WordPress Security and Protect Your SEO Ranking
Jaya Iyer
Understanding How ChatGPT Maintains Context
Understanding How ChatGPT Maintains Context
Dianne Pena
Building Interactive Data Visualizations with D3.js and React
Building Interactive Data Visualizations with D3.js and React
Oluwabusayo Jacobs
JavaScript vs Python: Which One Should You Learn First?
JavaScript vs Python: Which One Should You Learn First?
Olivia GibsonDarren Jones
13 Best Books, Courses and Communities for Learning React
13 Best Books, Courses and Communities for Learning React
Zain Zaidi
5 jQuery.each() Function Examples
5 jQuery.each() Function Examples
Florian RapplJames Hibbard
Implementing User Authentication in React Apps with Appwrite
Implementing User Authentication in React Apps with Appwrite
Yemi Ojedapo
AI-Powered Search Engine With Milvus Vector Database on Vultr
AI-Powered Search Engine With Milvus Vector Database on Vultr
Vultr
Understanding Signals in Django
Understanding Signals in Django
Kabaki Antony
Why React Icons May Be the Only Icon Library You Need
Why React Icons May Be the Only Icon Library You Need
Zain Zaidi
View Transitions in Astro
View Transitions in Astro
Tamas Piros
Getting Started with Content Collections in Astro
Getting Started with Content Collections in Astro
Tamas Piros
What Does the Java Virtual Machine Do All Day?
What Does the Java Virtual Machine Do All Day?
Peter Kessler
Become a Freelance Web Developer on Fiverr: Ultimate Guide
Become a Freelance Web Developer on Fiverr: Ultimate Guide
Mayank Singh
Layouts in Astro
Layouts in Astro
Tamas Piros
.NET 8: Blazor Render Modes Explained
.NET 8: Blazor Render Modes Explained
Peter De Tender
Mastering Node CSV
Mastering Node CSV
Dianne Pena
A Beginner’s Guide to SvelteKit
A Beginner’s Guide to SvelteKit
Erik KückelheimSimon Holthausen
Brighten Up Your Astro Site with KwesForms and Rive
Brighten Up Your Astro Site with KwesForms and Rive
Paul Scanlon
Which Programming Language Should I Learn First in 2024?
Which Programming Language Should I Learn First in 2024?
Joel Falconer
Managing PHP Versions with Laravel Herd
Managing PHP Versions with Laravel Herd
Dianne Pena
Accelerating the Cloud: The Final Steps
Accelerating the Cloud: The Final Steps
Dave Neary
An Alphebetized List of MIME Types
An Alphebetized List of MIME Types
Dianne Pena
The Best PHP Frameworks for 2024
The Best PHP Frameworks for 2024
Claudio Ribeiro
11 Best WordPress Themes for Developers & Designers in 2024
11 Best WordPress Themes for Developers & Designers in 2024
SitePoint Sponsors
Top 10 Best WordPress AI Plugins of 2024
Top 10 Best WordPress AI Plugins of 2024
Dianne Pena
20+ Tools for Node.js Development in 2024
20+ Tools for Node.js Development in 2024
Dianne Pena
The Best Figma Plugins to Enhance Your Design Workflow in 2024
The Best Figma Plugins to Enhance Your Design Workflow in 2024
Dianne Pena
Harnessing the Power of Zenserp for Advanced Search Engine Parsing
Harnessing the Power of Zenserp for Advanced Search Engine Parsing
Christopher Collins
Build Your Own AI Tools in Python Using the OpenAI API
Build Your Own AI Tools in Python Using the OpenAI API
Zain Zaidi
The Best React Chart Libraries for Data Visualization in 2024
The Best React Chart Libraries for Data Visualization in 2024
Dianne Pena
7 Free AI Logo Generators to Get Started
7 Free AI Logo Generators to Get Started
Zain Zaidi
Turn Your Vue App into an Offline-ready Progressive Web App
Turn Your Vue App into an Offline-ready Progressive Web App
Imran Alam
Clean Architecture: Theming with Tailwind and CSS Variables
Clean Architecture: Theming with Tailwind and CSS Variables
Emmanuel Onyeyaforo
How to Analyze Large Text Datasets with LangChain and Python
How to Analyze Large Text Datasets with LangChain and Python
Matt Nikonorov
6 Techniques for Conditional Rendering in React, with Examples
6 Techniques for Conditional Rendering in React, with Examples
Yemi Ojedapo
Introducing STRICH: Barcode Scanning for Web Apps
Introducing STRICH: Barcode Scanning for Web Apps
Alex Suzuki
Using Nodemon and Watch in Node.js for Live Restarts
Using Nodemon and Watch in Node.js for Live Restarts
Craig Buckler
Task Automation and Debugging with AI-Powered Tools
Task Automation and Debugging with AI-Powered Tools
Timi Omoyeni
Quick Tip: Understanding React Tooltip
Quick Tip: Understanding React Tooltip
Dianne Pena
12 Outstanding AI Tools that Enhance Efficiency & Productivity
12 Outstanding AI Tools that Enhance Efficiency & Productivity
Ilija Sekulov
React Performance Optimization
React Performance Optimization
Blessing Ene Anyebe
Introducing Chatbots and Large Language Models (LLMs)
Introducing Chatbots and Large Language Models (LLMs)
Timi Omoyeni
Migrate to Ampere on OCI with Heterogeneous Kubernetes Clusters
Migrate to Ampere on OCI with Heterogeneous Kubernetes Clusters
Ampere Computing
Scale Your React App with Storybook and Chromatic
Scale Your React App with Storybook and Chromatic
Daine Mawer
10 Tips for Implementing Webflow On-page SEO
10 Tips for Implementing Webflow On-page SEO
Milan Vracar
Get the freshest news and resources for developers, designers and digital creators in your inbox each week