diff options
author | Johann-S <johann.servoire@gmail.com> | 2019-02-13 17:13:53 +0300 |
---|---|---|
committer | XhmikosR <xhmikosr@gmail.com> | 2019-02-13 18:55:38 +0300 |
commit | 2ccfa57467c0e31ec2016d1be03c55184ce8a69d (patch) | |
tree | d04a427b482b3afd5fe0f4da66c5d44b9f824ce0 | |
parent | a43077d3c3b3ef9b2afc426a573b40daeff788fe (diff) |
handle # selector for dropdown
-rw-r--r-- | js/dropdown.js | 2 | ||||
-rw-r--r-- | js/tests/unit/dropdown.js | 31 |
2 files changed, 32 insertions, 1 deletions
diff --git a/js/dropdown.js b/js/dropdown.js index c4e5f65dfc..4ded850121 100644 --- a/js/dropdown.js +++ b/js/dropdown.js @@ -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() } diff --git a/js/tests/unit/dropdown.js b/js/tests/unit/dropdown.js index 566b50ee7e..747bf60d9e 100644 --- a/js/tests/unit/dropdown.js +++ b/js/tests/unit/dropdown.js @@ -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') + }) }) |