]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
handle # selector for dropdown
authorJohann-S <johann.servoire@gmail.com>
Wed, 13 Feb 2019 14:13:53 +0000 (15:13 +0100)
committerXhmikosR <xhmikosr@gmail.com>
Wed, 13 Feb 2019 15:55:38 +0000 (17:55 +0200)
js/dropdown.js
js/tests/unit/dropdown.js

index c4e5f65dfc77100c5345bd7e9e8ac534663cdeb5..4ded8501211831bc9f565c4a431312656f5b228d 100644 (file)
@@ -29,7 +29,7 @@
       selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
     }
 
-    var $parent = selector && $(document).find(selector)
+    var $parent = selector !== '#' ? $(document).find(selector) : null
 
     return $parent && $parent.length ? $parent : $this.parent()
   }
index 566b50ee7e124236ad5ce1c176d36f17ba1766e7..747bf60d9e51d07c194e587010974ec1d8f2890f 100644 (file)
@@ -420,4 +420,35 @@ $(function () {
 
     assert.ok($dropdown.parent('.btn-group').hasClass('open'), 'dropdown menu is open')
   })
+
+  QUnit.test('should handle # in data-target', function (assert) {
+    assert.expect(1)
+    var done = assert.async()
+
+    var html = [
+      '<div class="dropdown">',
+      '  <a id="dLabel" data-target="#" href="http://example.com/" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">',
+      '    Dropdown trigger',
+      '  </a>',
+      '  <ul class="dropdown-menu" aria-labelledby="dLabel">',
+      '    <li><a href="/test">One</a></li>',
+      '    <li><a href="/test2">Two</a></li>',
+      '  </ul>',
+      '</div>'
+    ].join('')
+
+    var $dropdown = $(html)
+      .appendTo('#qunit-fixture')
+      .find('[data-toggle="dropdown"]')
+      .bootstrapDropdown()
+
+    $dropdown
+      .parent('.dropdown')
+      .on('shown.bs.dropdown', function () {
+        assert.ok($dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
+        done()
+      })
+
+    $dropdown.trigger('click')
+  })
 })