diff --git a/js/src/tab.js b/js/src/tab.js index 012d2f76fc..9dc33e4da3 100644 --- a/js/src/tab.js +++ b/js/src/tab.js @@ -181,7 +181,7 @@ const Tab = (($) => { if (active) { $(active).removeClass(ClassName.ACTIVE) - let dropdownChild = $(active).find( + let dropdownChild = $(active.parentNode).find( Selector.DROPDOWN_ACTIVE_CHILD )[0] diff --git a/js/tests/unit/tab.js b/js/tests/unit/tab.js index 522ed0b3e4..1f990f0f33 100644 --- a/js/tests/unit/tab.js +++ b/js/tests/unit/tab.js @@ -241,4 +241,36 @@ $(function () { assert.strictEqual($tabs.find('a:not(.active)').attr('aria-expanded'), 'false', 'after second show event, hidden tab has aria-expanded = false') }) + QUnit.test('selected tab should deactivate previous selected tab', function (assert) { + assert.expect(2) + var tabsHTML = '
' + var $tabs = $(tabsHTML).appendTo('#qunit-fixture') + + $tabs.find('li:last a').trigger('click') + assert.notOk($tabs.find('li:first a').hasClass('active')) + assert.ok($tabs.find('li:last a').hasClass('active')) + }) + + QUnit.test('selected tab should deactivate previous selected link in dropdown', function (assert) { + assert.expect(3) + var tabsHTML = ' ' + var $tabs = $(tabsHTML).appendTo('#qunit-fixture') + + $tabs.find('li:first > a').trigger('click') + assert.ok($tabs.find('li:first a').hasClass('active')) + assert.notOk($tabs.find('li:last > a').hasClass('active')) + assert.notOk($tabs.find('li:last > .dropdown-menu > a:first').hasClass('active')) + }) })