Commit 5a6be717 authored by Johann-S's avatar Johann-S Committed by XhmikosR
Browse files

Remove escaping selector and add a warning to inform folks to escape their selectors (#25390)

parent db70164d
5 merge requests!28721Hot test,!27561Adds font-weight-medium to font weight classes,!25494web pack,!23207#22402 : modal: new autofocus & keyboardBtnNav options,!17021v4
Showing with 6 additions and 27 deletions
+6 -27
...@@ -32,6 +32,11 @@ Alternatively, to target a specific plugin, just include the plugin's name as a ...@@ -32,6 +32,11 @@ Alternatively, to target a specific plugin, just include the plugin's name as a
$(document).off('.alert.data-api') $(document).off('.alert.data-api')
{% endhighlight %} {% endhighlight %}
{% callout warning %}
##### Escaping selectors
If you use special selectors, for example: `collapse:Example`, be sure to escape them, because they'll be passed through jQuery.
{% endcallout %}
## Events ## Events
Bootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. `show`) is triggered at the start of an event, and its past participle form (ex. `shown`) is triggered on the completion of an action. Bootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. `show`) is triggered at the start of an event, and its past participle form (ex. `shown`) is triggered on the completion of an action.
......
...@@ -72,15 +72,6 @@ const Util = (($) => { ...@@ -72,15 +72,6 @@ const Util = (($) => {
} }
} }
function escapeId(selector) {
// We escape IDs in case of special selectors (selector = '#myId:something')
// $.escapeSelector does not exist in jQuery < 3
selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1)
: selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1')
return selector
}
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Public Util Api * Public Util Api
...@@ -105,11 +96,6 @@ const Util = (($) => { ...@@ -105,11 +96,6 @@ const Util = (($) => {
selector = element.getAttribute('href') || '' selector = element.getAttribute('href') || ''
} }
// If it's an ID
if (selector.charAt(0) === '#') {
selector = escapeId(selector)
}
try { try {
const $selector = $(document).find(selector) const $selector = $(document).find(selector)
return $selector.length > 0 ? selector : null return $selector.length > 0 ? selector : null
......
...@@ -4,7 +4,7 @@ $(function () { ...@@ -4,7 +4,7 @@ $(function () {
QUnit.module('util') QUnit.module('util')
QUnit.test('Util.getSelectorFromElement should return the correct element', function (assert) { QUnit.test('Util.getSelectorFromElement should return the correct element', function (assert) {
assert.expect(5) assert.expect(2)
var $el = $('<div data-target="body"></div>').appendTo($('#qunit-fixture')) var $el = $('<div data-target="body"></div>').appendTo($('#qunit-fixture'))
assert.strictEqual(Util.getSelectorFromElement($el[0]), 'body') assert.strictEqual(Util.getSelectorFromElement($el[0]), 'body')
...@@ -12,18 +12,6 @@ $(function () { ...@@ -12,18 +12,6 @@ $(function () {
// Not found element // Not found element
var $el2 = $('<div data-target="#fakeDiv"></div>').appendTo($('#qunit-fixture')) var $el2 = $('<div data-target="#fakeDiv"></div>').appendTo($('#qunit-fixture'))
assert.strictEqual(Util.getSelectorFromElement($el2[0]), null) assert.strictEqual(Util.getSelectorFromElement($el2[0]), null)
// Should escape ID and find the correct element
var $el3 = $('<div data-target="#collapse:Example"></div>').appendTo($('#qunit-fixture'))
$('<div id="collapse:Example"></div>').appendTo($('#qunit-fixture'))
assert.strictEqual(Util.getSelectorFromElement($el3[0]), '#collapse\\:Example')
// If $.escapeSelector doesn't exist in older jQuery versions (< 3)
var tmpEscapeSelector = $.escapeSelector
delete $.escapeSelector
assert.ok(typeof $.escapeSelector === 'undefined', '$.escapeSelector undefined')
assert.strictEqual(Util.getSelectorFromElement($el3[0]), '#collapse\\:Example')
$.escapeSelector = tmpEscapeSelector
}) })
QUnit.test('Util.typeCheckConfig should thrown an error when a bad config is passed', function (assert) { QUnit.test('Util.typeCheckConfig should thrown an error when a bad config is passed', function (assert) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment