From 487282f255e98505ad1dfcf95386b58beef72dd2 Mon Sep 17 00:00:00 2001 From: Commander-lol <ljcapitanio@gmail.com> Date: Tue, 13 Jan 2015 14:47:59 +0000 Subject: [PATCH] Added Parent/Children functions for easier DOM walking --- js/tinyDOM.js | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/js/tinyDOM.js b/js/tinyDOM.js index d329f6b..603028d 100644 --- a/js/tinyDOM.js +++ b/js/tinyDOM.js @@ -5,7 +5,12 @@ (function () { 'use strict'; - var proto, TinyDOMFunction, tinyDOM; + var proto, + TinyDOMFunction, + tinyDOM, + td_prop = { + isHidden: false + }; /* * Polyfill from https://gist.github.com/elijahmanor/6452535 @@ -27,16 +32,23 @@ var elements = document.querySelectorAll(selector), i, e; this.length = elements.length; - for (i = 0; i < elements.length; i += 1) { + for (i = 0; i < elements.length; i++) { e = elements.item(i); if (typeof (e.td_prop) === 'undefined') { - e.td_prop = { - isHidden: false - }; + e = tinyDOM.merge(e, td_prop); } - this[i] = elements.item(i); + this[i] = e; } - } else { + } else if (selector.length) { + var i, e; + for (i = 0; i < selector.length; i++) { + e = selector[i]; + if (typeof (e.td_prop) === 'undefined') { + e = tinyDOM.merge(e, td_prop); + } + this[i] = e; + } + } else { this[0] = selector; this.length = 1; } @@ -114,6 +126,19 @@ return null; } }, + parent: function() { + return tinyDOM(this[0].parentNode); + }, + children: function() { + var n = this[0].childNodes, + a = [], i; + for (i = 0; i < n.length; i++) { + if (tinyDOM.isElement(n[i])) { + a.push(n[i]); + } + } + return tinyDOM(a); + }, data: function (key, value) { var e = this[0]; if (typeof (value) !== 'undefined') { @@ -144,6 +169,16 @@ } }; + tinyDOM.isElement = function(node) { + var is = false; + try { + is = node instanceof HTMLElement; + } catch(e) { + is = node.nodeType && node.nodeType === 1; + } + return is; + } + tinyDOM.exists = function (obj) { return obj !== null && typeof (obj) !== 'undefined'; }; -- GitLab