diff options
Diffstat (limited to 'assets/js/core/dom.js')
-rw-r--r-- | assets/js/core/dom.js | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/assets/js/core/dom.js b/assets/js/core/dom.js index 821a1d2f..33039285 100644 --- a/assets/js/core/dom.js +++ b/assets/js/core/dom.js @@ -1,4 +1,3 @@ - KB.dom = function (tag) { function DomManipulation(tag) { @@ -31,19 +30,33 @@ KB.dom = function (tag) { return this; }; - this.click = function (callback) { - element.onclick = function (e) { + this.on = function (eventName, callback) { + element.addEventListener(eventName, function (e) { e.preventDefault(); - callback(); - }; + callback(e.target); + }); + return this; }; + this.click = function (callback) { + return this.on('click', callback); + }; + + this.change = function (callback) { + return this.on('change', callback); + }; + this.add = function (node) { element.appendChild(node); return this; }; + this.replace = function (node) { + element.parentNode.replaceChild(node, element); + return this; + }; + this.html = function (html) { element.innerHTML = html; return this; @@ -73,6 +86,16 @@ KB.dom = function (tag) { return element.classList.contains(className); }; + this.disable = function () { + element.disabled = true; + return this; + }; + + this.enable = function () { + element.disabled = false; + return this; + }; + this.parent = function (selector) { for (; element && element !== document; element = element.parentNode) { if (element.matches(selector)) { @@ -83,7 +106,7 @@ KB.dom = function (tag) { return null; }; - this.child = function (selector) { + this.find = function (selector) { return element.querySelector(selector); }; @@ -118,3 +141,13 @@ KB.dom = function (tag) { return new DomManipulation(tag); }; + +KB.find = function (selector) { + var element = document.querySelector(selector); + + if (element) { + return KB.dom(element); + } + + return null; +}; |