Skip to content

Commit

Permalink
fix(util): use getElementById when it's possible
Browse files Browse the repository at this point in the history
  • Loading branch information
Johann-S committed Aug 7, 2018
1 parent ae53690 commit 6b92321
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
12 changes: 10 additions & 2 deletions js/src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,20 @@ const Util = (($) => {

getSelectorFromElement(element) {
let selector = element.getAttribute('data-target')
let method = 'querySelector'

if (!selector || selector === '#') {
selector = element.getAttribute('href') || ''
selector = (element.getAttribute('href') || '').trim()
}

const validSelector = selector
if (selector.charAt(0) === '#') {
selector = selector.substr(1)
method = 'getElementById'
}

try {
return document.querySelector(selector) ? selector : null
return document[method](selector) ? validSelector : null
} catch (err) {
return null
}
Expand Down
12 changes: 12 additions & 0 deletions js/tests/unit/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,18 @@ $(function () {
assert.strictEqual(Util.getSelectorFromElement($el2[0]), null)
})

QUnit.test('Util.getSelectorFromElement should use getElementById', function (assert) {
assert.expect(2)

var spy = sinon.spy(document, 'getElementById')

var $el = $('<div data-target="#7"></div>').appendTo($('#qunit-fixture'))
$('<div id="7" />').appendTo($('#qunit-fixture'))

assert.strictEqual(Util.getSelectorFromElement($el[0]), '#7')
assert.ok(spy.called)
})

QUnit.test('Util.typeCheckConfig should thrown an error when a bad config is passed', function (assert) {
assert.expect(1)
var namePlugin = 'collapse'
Expand Down

0 comments on commit 6b92321

Please sign in to comment.