Skip to content

Commit

Permalink
Remove escaping selector and add a warning to inform folks to escape …
Browse files Browse the repository at this point in the history
…their selectors
  • Loading branch information
Johann-S committed Jan 21, 2018
1 parent bd9084d commit 8f50dd5
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 26 deletions.
5 changes: 5 additions & 0 deletions docs/4.0/getting-started/javascript.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ Alternatively, to target a specific plugin, just include the plugin's name as a
$(document).off('.alert.data-api')
{% endhighlight %}

{% callout warning %}
##### Escaping selectors
If you use special selectors, for example : "collapse:Example", be sure to escape those selectors because they'll be pass threw jQuery.
{% endcallout %}

## 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.
Expand Down
14 changes: 0 additions & 14 deletions js/src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -105,11 +96,6 @@ const Util = (($) => {
selector = element.getAttribute('href') || ''
}

// If it's an ID
if (selector.charAt(0) === '#') {
selector = escapeId(selector)
}

try {
const $selector = $(document).find(selector)
return $selector.length > 0 ? selector : null
Expand Down
12 changes: 0 additions & 12 deletions js/tests/unit/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,6 @@ $(function () {
// Not found element
var $el2 = $('<div data-target="#fakeDiv"></div>').appendTo($('#qunit-fixture'))
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) {
Expand Down

0 comments on commit 8f50dd5

Please sign in to comment.