diff options
author | Michał Gołębiowski-Owczarek <m.goleb@gmail.com> | 2020-01-22 16:44:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-22 16:44:34 +0100 |
commit | 0c860b0d92f9959f6747f8c02e9671eb2fc561aa (patch) | |
tree | eec1af4f3a9eead707e2674593bda620b5f7c9cb /ui | |
parent | 3481f50bfcf02865857d390a1caa511003a40c13 (diff) | |
download | jquery-ui-0c860b0d92f9959f6747f8c02e9671eb2fc561aa.tar.gz jquery-ui-0c860b0d92f9959f6747f8c02e9671eb2fc561aa.zip |
All: Remove usage of jQuery positional selectors
jQuery positional selectors () have been deprecated in
[jQuery 3.4.0](https://blog.jquery.com/2019/04/10/jquery-3-4-0-released/)
and they'll be removed in jQuery 4.0.0. This PR removes their usage.
Most of the changes were possible without changing public API. However,
dropping `:even` usage required a change to the
[`header` option](https://api.jqueryui.com/accordion/#option-header)
of the accordion widget. I made it an optional function; this will need
to be documented.
The polyfill for `.even()` & `.odd()` is added for jQuery <3.5.0. There was
no usage of the :odd selector in the code but the `.odd()` method is also
polyfilled for completeness.
Closes gh-1904
Diffstat (limited to 'ui')
-rw-r--r-- | ui/jquery-1-7.js | 17 | ||||
-rw-r--r-- | ui/widgets/accordion.js | 10 | ||||
-rw-r--r-- | ui/widgets/datepicker.js | 2 | ||||
-rw-r--r-- | ui/widgets/dialog.js | 4 |
4 files changed, 28 insertions, 5 deletions
diff --git a/ui/jquery-1-7.js b/ui/jquery-1-7.js index 5e7907a15..3d0870f7c 100644 --- a/ui/jquery-1-7.js +++ b/ui/jquery-1-7.js @@ -98,4 +98,21 @@ if ( !$.uniqueSort ) { $.uniqueSort = $.unique; } +// Support: jQuery 3.4.x or older +// These methods have been defined in jQuery 3.5.0. +if ( !$.fn.even || !$.fn.odd ) { + $.fn.extend( { + even: function() { + return this.filter( function( i ) { + return i % 2 === 0; + } ); + }, + odd: function() { + return this.filter( function( i ) { + return i % 2 === 1; + } ); + } + } ); +} + } ) ); diff --git a/ui/widgets/accordion.js b/ui/widgets/accordion.js index 530d73543..59a6a7315 100644 --- a/ui/widgets/accordion.js +++ b/ui/widgets/accordion.js @@ -48,7 +48,9 @@ return $.widget( "ui.accordion", { }, collapsible: false, event: "click", - header: "> li > :first-child, > :not(li):even", + header: function( elem ) { + return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() ); + }, heightStyle: "auto", icons: { activeHeader: "ui-icon-triangle-1-s", @@ -279,7 +281,11 @@ return $.widget( "ui.accordion", { var prevHeaders = this.headers, prevPanels = this.panels; - this.headers = this.element.find( this.options.header ); + if ( typeof this.options.header === "function" ) { + this.headers = this.options.header( this.element ); + } else { + this.headers = this.element.find( this.options.header ); + } this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", "ui-state-default" ); diff --git a/ui/widgets/datepicker.js b/ui/widgets/datepicker.js index c777a4b0e..5e6321e1d 100644 --- a/ui/widgets/datepicker.js +++ b/ui/widgets/datepicker.js @@ -858,7 +858,7 @@ $.extend( Datepicker.prototype, { //assure that inst.yearshtml didn't change. if ( origyearshtml === inst.yearshtml && inst.yearshtml ) { - inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml ); + inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml ); } origyearshtml = inst.yearshtml = null; }, 0 ); diff --git a/ui/widgets/dialog.js b/ui/widgets/dialog.js index e4798e0d7..c9feee48a 100644 --- a/ui/widgets/dialog.js +++ b/ui/widgets/dialog.js @@ -369,8 +369,8 @@ $.widget( "ui.dialog", { return; } var tabbables = this.uiDialog.find( ":tabbable" ), - first = tabbables.filter( ":first" ), - last = tabbables.filter( ":last" ); + first = tabbables.first(), + last = tabbables.last(); if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) && !event.shiftKey ) { |