aboutsummaryrefslogtreecommitdiff
path: root/js/tests
diff options
context:
space:
mode:
authorAlessandro Chitolina <[email protected]>2017-10-21 01:38:59 +0200
committerXhmikosR <[email protected]>2019-02-20 22:05:45 +0200
commitec69de4b7e6df400fb2f2796ae1a9898c017bcca (patch)
tree11b27fa0cb3000381fee0966e18f180b4ec8d7d7 /js/tests
parent99c3119c8269ba1c275cab744fa154c11e49bace (diff)
downloadbootstrap-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.js70
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)
+
+ })
})