]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Remove escaping selector and add a warning to inform folks to escape their selectors...
authorJohann-S <johann.servoire@gmail.com>
Sun, 21 Jan 2018 20:02:16 +0000 (21:02 +0100)
committerXhmikosR <xhmikosr@gmail.com>
Sun, 21 Jan 2018 20:02:16 +0000 (22:02 +0200)
docs/4.0/getting-started/javascript.md
js/src/util.js
js/tests/unit/util.js

index 72d1e14ecd5194ca1891acb3bf5ed382e843241a..0c1eb5f3943c45696036dda46d12e99710296510 100644 (file)
@@ -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 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.
index 6e32e955d04a06a63d6cfa9493fa467ff3773c14..7e5d5de5c6abf0f9f3b094a4a42a7d4e18be03a7 100644 (file)
@@ -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
@@ -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
index e56bef18ebb1cab61abc0308ff23d59b9957eb20..83eb601a51520d04a843c0f0791e117f2f4affe0 100644 (file)
@@ -4,7 +4,7 @@ $(function () {
   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')
@@ -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) {