summaryrefslogtreecommitdiff
path: root/assets/js/core/dom.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/core/dom.js')
-rw-r--r--assets/js/core/dom.js45
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;
+};