diff --git a/js/src/collapse.js b/js/src/collapse.js index 693e7ee2c8..3b8c15212c 100644 --- a/js/src/collapse.js +++ b/js/src/collapse.js @@ -72,7 +72,6 @@ class Collapse { this._element = element this._config = this._getConfig(config) this._triggerArray = SelectorEngine.find( - `${SELECTOR_DATA_TOGGLE}[href="#${element.id}"],` + `${SELECTOR_DATA_TOGGLE}[data-target="#${element.id}"]` ) diff --git a/js/src/scrollspy.js b/js/src/scrollspy.js index 90e03b0007..ff80de7674 100644 --- a/js/src/scrollspy.js +++ b/js/src/scrollspy.js @@ -121,7 +121,7 @@ class ScrollSpy { targets .map(element => { let target - const targetSelector = getSelectorFromElement(element) + const targetSelector = this._getSelectorFromElement(element) if (targetSelector) { target = SelectorEngine.findOne(targetSelector) @@ -163,6 +163,18 @@ class ScrollSpy { // Private + _getSelectorFromElement(element) { + let selector = getSelectorFromElement(element) + + if (!selector) { + const hrefAttr = element.getAttribute('href') + + selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null + } + + return selector + } + _getConfig(config) { config = { ...Default, diff --git a/js/src/util/index.js b/js/src/util/index.js index d9a975554c..e508908c43 100644 --- a/js/src/util/index.js +++ b/js/src/util/index.js @@ -33,12 +33,10 @@ const getUID = prefix => { } const getSelector = element => { - let selector = element.getAttribute('data-target') + const selector = element.getAttribute('data-target') - if (!selector || selector === '#') { - const hrefAttr = element.getAttribute('href') - - selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null + if (!selector) { + return null } return selector diff --git a/js/tests/unit/collapse.spec.js b/js/tests/unit/collapse.spec.js index a5e101aad1..fcf3adfa57 100644 --- a/js/tests/unit/collapse.spec.js +++ b/js/tests/unit/collapse.spec.js @@ -376,7 +376,7 @@ describe('Collapse', () => { describe('data-api', () => { it('should show multiple collapsed elements', done => { fixtureEl.innerHTML = [ - '', + '', '
', '' ].join('') @@ -398,7 +398,7 @@ describe('Collapse', () => { it('should hide multiple collapsed elements', done => { fixtureEl.innerHTML = [ - '', + '', '', '' ].join('') @@ -466,11 +466,11 @@ describe('Collapse', () => { fixtureEl.innerHTML = [ '' @@ -521,13 +521,13 @@ describe('Collapse', () => { '