$(document).off('.alert.data-api')
{% 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
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.
}
}
- 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
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
QUnit.module('util')
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'))
assert.strictEqual(Util.getSelectorFromElement($el[0]), 'body')
// 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) {