Skip to content
GitLab
    • Explore Projects Groups Snippets
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • B bootstrap
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 263
    • Issues 263
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 114
    • Merge requests 114
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Bootstrap
  • bootstrap
  • Merge requests
  • !27031

fix(util): use getElementById when it's possible

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Administrator requested to merge v4-dev-jo-getelembyid into v4-dev 6 years ago
  • Overview 0
  • Commits 1
  • Pipelines 0
  • Changes 2

Created by: Johann-S

Fixes: #27028 (closed)

/CC @XhmikosR

Compare
  • v4-dev (base)

and
  • latest version
    bae2dba2
    1 commit, 2 years ago

2 files
+ 22
- 2

    Preferences

    File browser
    Compare changes
j‎s‎
s‎rc‎
uti‎l.js‎ +10 -2
tests‎/unit‎
uti‎l.js‎ +12 -0
js/src/util.js
+ 10
- 2
  • View file @ bae2dba2

  • Edit in single-file editor

  • Open in Web IDE


@@ -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
}
js/tests/unit/util.js
+ 12
- 0
  • View file @ bae2dba2

  • Edit in single-file editor

  • Open in Web IDE


@@ -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'
0 Assignees
None
Assign to
0 Reviewers
None
Request review from
Labels
2
docs v4
2
docs v4
    Assign labels
  • Manage project labels

Milestone
v4.0.0-alpha.2
v4.0.0-alpha.2
None
Time tracking
No estimate or time spent
Lock merge request
Unlocked
0
0 participants
Reference: twbs/bootstrap!17085
Source branch: v4-dev-jo-getelembyid

Menu

Explore Projects Groups Snippets