diff options
| author | Alessandro Chitolina <[email protected]> | 2017-10-21 01:38:59 +0200 |
|---|---|---|
| committer | XhmikosR <[email protected]> | 2019-02-20 22:05:45 +0200 |
| commit | ec69de4b7e6df400fb2f2796ae1a9898c017bcca (patch) | |
| tree | 11b27fa0cb3000381fee0966e18f180b4ec8d7d7 /js/tests | |
| parent | 99c3119c8269ba1c275cab744fa154c11e49bace (diff) | |
| download | bootstrap-ec69de4b7e6df400fb2f2796ae1a9898c017bcca.tar.xz bootstrap-ec69de4b7e6df400fb2f2796ae1a9898c017bcca.zip | |
allow register the same handler for different delegated selectors in eventHandler
Diffstat (limited to 'js/tests')
| -rw-r--r-- | js/tests/unit/dom/eventHandler.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/js/tests/unit/dom/eventHandler.js b/js/tests/unit/dom/eventHandler.js index 7404d6c32..998132911 100644 --- a/js/tests/unit/dom/eventHandler.js +++ b/js/tests/unit/dom/eventHandler.js @@ -135,6 +135,32 @@ $(function () { document.body.removeChild(element) }) + QUnit.test('on should add delegated event listener if delegated selector differs', function (assert) { + assert.expect(1) + + var element = document.createElement('div') + var subelement = document.createElement('span') + element.appendChild(subelement) + + var anchor = document.createElement('a') + element.appendChild(anchor) + + var i = 0 + var handler = function () { + i++ + } + + EventHandler.on(element, 'click', 'a', handler) + EventHandler.on(element, 'click', 'span', handler) + + document.body.appendChild(element) + EventHandler.trigger(anchor, 'click') + EventHandler.trigger(subelement, 'click') + document.body.removeChild(element) + + assert.ok(i === 2, 'listeners called') + }) + QUnit.test('one should remove the listener after the event', function (assert) { assert.expect(1) @@ -268,4 +294,48 @@ $(function () { EventHandler.trigger(element, 'foobar') }) + + QUnit.test('off should remove the correct delegated event listener', function (assert) { + assert.expect(5) + + var element = document.createElement('div') + var subelement = document.createElement('span') + element.appendChild(subelement) + + var anchor = document.createElement('a') + element.appendChild(anchor) + + var i = 0 + var handler = function () { + i++ + } + + EventHandler.on(element, 'click', 'a', handler) + EventHandler.on(element, 'click', 'span', handler) + + document.body.appendChild(element) + + EventHandler.trigger(anchor, 'click') + EventHandler.trigger(subelement, 'click') + assert.ok(i === 2, 'first listeners called') + + EventHandler.off(element, 'click', 'span', handler) + EventHandler.trigger(subelement, 'click') + assert.ok(i === 2, 'removed listener not called') + + EventHandler.trigger(anchor, 'click') + assert.ok(i === 3, 'not removed listener called') + + EventHandler.on(element, 'click', 'span', handler) + EventHandler.trigger(anchor, 'click') + EventHandler.trigger(subelement, 'click') + assert.ok(i === 5, 'listener re-registered') + + EventHandler.off(element, 'click', 'span') + EventHandler.trigger(subelement, 'click') + assert.ok(i === 5, 'listener removed again') + + document.body.removeChild(element) + + }) }) |
