mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Selector: add jQuery.escapeSelector
Fixes gh-1761 Close gh-2878
This commit is contained in:
parent
a8c0194d3d
commit
25068bf2c6
@ -37,7 +37,26 @@ var hasDuplicate, sortInput,
|
||||
documentElement.webkitMatchesSelector ||
|
||||
documentElement.mozMatchesSelector ||
|
||||
documentElement.oMatchesSelector ||
|
||||
documentElement.msMatchesSelector;
|
||||
documentElement.msMatchesSelector,
|
||||
|
||||
// CSS string/identifier serialization
|
||||
// https://drafts.csswg.org/cssom/#common-serializing-idioms
|
||||
rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
|
||||
fcssescape = function( ch, asCodePoint ) {
|
||||
if ( asCodePoint ) {
|
||||
|
||||
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
|
||||
if ( ch === "\0" ) {
|
||||
return "\uFFFD";
|
||||
}
|
||||
|
||||
// Control characters and (dependent upon position) numbers get escaped as code points
|
||||
return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
|
||||
}
|
||||
|
||||
// Other potentially-special ASCII characters get backslash-escaped
|
||||
return "\\" + ch;
|
||||
};
|
||||
|
||||
function sortOrder( a, b ) {
|
||||
|
||||
@ -110,7 +129,14 @@ function uniqueSort( results ) {
|
||||
return results;
|
||||
}
|
||||
|
||||
function escape( sel ) {
|
||||
return ( sel + "" ).replace( rcssescape, fcssescape );
|
||||
}
|
||||
|
||||
jQuery.extend( {
|
||||
uniqueSort: uniqueSort,
|
||||
unique: uniqueSort,
|
||||
escapeSelector: escape,
|
||||
find: function( selector, context, results, seed ) {
|
||||
var elem, nodeType,
|
||||
i = 0;
|
||||
@ -140,8 +166,6 @@ jQuery.extend( {
|
||||
|
||||
return results;
|
||||
},
|
||||
uniqueSort: uniqueSort,
|
||||
unique: uniqueSort,
|
||||
text: function( elem ) {
|
||||
var node,
|
||||
ret = "",
|
||||
|
@ -10,5 +10,6 @@ jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
|
||||
jQuery.text = Sizzle.getText;
|
||||
jQuery.isXMLDoc = Sizzle.isXML;
|
||||
jQuery.contains = Sizzle.contains;
|
||||
jQuery.escapeSelector = Sizzle.escape;
|
||||
|
||||
} );
|
||||
|
@ -536,3 +536,9 @@ QUnit.asyncTest( "Iframe dispatch should not affect jQuery (#13936)", 1, functio
|
||||
iframeDoc.write( "<body><form id='navigate' action='?'></form></body>" );
|
||||
iframeDoc.close();
|
||||
} );
|
||||
|
||||
QUnit.test( "Ensure escapeSelector exists (escape tests in Sizzle)", function( assert ) {
|
||||
assert.expect( 1 );
|
||||
|
||||
assert.equal( jQuery.escapeSelector( "#foo.bar" ), "\\#foo\\.bar", "escapeSelector present" );
|
||||
} );
|
||||
|
Loading…
Reference in New Issue
Block a user