Skip to content

Commit 7c6a9f0

Browse files
authored
All: Drop $.ui.escapeSelector in favor of $.escapeSelector
Fixes #14991 Closes gh-1957
1 parent afe20b7 commit 7c6a9f0

File tree

7 files changed

+35
-37
lines changed

7 files changed

+35
-37
lines changed

tests/unit/core/selector.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ define( [
33
"jquery",
44
"lib/helper",
55
"ui/data",
6-
"ui/escape-selector",
76
"ui/focusable",
87
"ui/tabbable"
98
], function( QUnit, $, helper ) {
@@ -280,11 +279,4 @@ QUnit.test( "tabbable - dimensionless parent with overflow", function( assert )
280279
assert.isTabbable( "#dimensionlessParent", "input" );
281280
} );
282281

283-
QUnit.test( "escapeSelector", function( assert ) {
284-
assert.expect( 1 );
285-
286-
assert.equal( $( "#" + $.ui.escapeSelector( "weird-['x']-id" ) ).length, 1,
287-
"properly escapes selectors to use as an id" );
288-
} );
289-
290282
} );

ui/escape-selector.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

ui/jquery-patch.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,36 @@ if ( !$.uniqueSort ) {
3636
$.uniqueSort = $.unique;
3737
}
3838

39+
// Support: jQuery 2.2.x or older.
40+
// This method has been defined in jQuery 3.0.0.
41+
// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
42+
if ( !$.escapeSelector ) {
43+
44+
// CSS string/identifier serialization
45+
// https://drafts.csswg.org/cssom/#common-serializing-idioms
46+
var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
47+
48+
var fcssescape = function( ch, asCodePoint ) {
49+
if ( asCodePoint ) {
50+
51+
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
52+
if ( ch === "\0" ) {
53+
return "\uFFFD";
54+
}
55+
56+
// Control characters and (dependent upon position) numbers get escaped as code points
57+
return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
58+
}
59+
60+
// Other potentially-special ASCII characters get backslash-escaped
61+
return "\\" + ch;
62+
};
63+
64+
$.escapeSelector = function( sel ) {
65+
return ( sel + "" ).replace( rcssescape, fcssescape );
66+
};
67+
}
68+
3969
// Support: jQuery 3.4.x or older
4070
// These methods have been defined in jQuery 3.5.0.
4171
if ( !$.fn.even || !$.fn.odd ) {

ui/labels.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
if ( typeof define === "function" && define.amd ) {
1717

1818
// AMD. Register as an anonymous module.
19-
define( [ "jquery", "./version", "./escape-selector" ], factory );
19+
define( [ "jquery", "./version" ], factory );
2020
} else {
2121

2222
// Browser globals
@@ -53,7 +53,7 @@ return $.fn.labels = function() {
5353
ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
5454

5555
// Create a selector for the label based on the id
56-
selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
56+
selector = "label[for='" + $.escapeSelector( id ) + "']";
5757

5858
labels = labels.add( ancestors.find( selector ).addBack( selector ) );
5959

ui/widgets/checkboxradio.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
// AMD. Register as an anonymous module.
2424
define( [
2525
"jquery",
26-
"../escape-selector",
2726
"../form-reset-mixin",
2827
"../labels",
2928
"../widget"
@@ -149,7 +148,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
149148
_getRadioGroup: function() {
150149
var group;
151150
var name = this.element[ 0 ].name;
152-
var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
151+
var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
153152

154153
if ( !name ) {
155154
return $( [] );

ui/widgets/selectmenu.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
define( [
2626
"jquery",
2727
"./menu",
28-
"../escape-selector",
2928
"../form-reset-mixin",
3029
"../keycode",
3130
"../labels",
@@ -425,7 +424,7 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
425424
}
426425

427426
if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
428-
$.ui.escapeSelector( this.ids.button ) ).length ) {
427+
$.escapeSelector( this.ids.button ) ).length ) {
429428
this.close( event );
430429
}
431430
}

ui/widgets/tabs.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
// AMD. Register as an anonymous module.
2323
define( [
2424
"jquery",
25-
"../escape-selector",
2625
"../keycode",
2726
"../safe-active-element",
2827
"../unique-id",
@@ -733,7 +732,7 @@ $.widget( "ui.tabs", {
733732
// meta-function to give users option to provide a href string instead of a numerical index.
734733
if ( typeof index === "string" ) {
735734
index = this.anchors.index( this.anchors.filter( "[href$='" +
736-
$.ui.escapeSelector( index ) + "']" ) );
735+
$.escapeSelector( index ) + "']" ) );
737736
}
738737

739738
return index;

0 commit comments

Comments
 (0)