Bring in an updated jzed.js and thinking adding a few ideas for the lesson introducing a big of DOM magic.
parent
c2f61b9215
commit
f6b0b72a82
@ -0,0 +1,211 @@ |
||||
const $get = (name, inChildren) => { |
||||
if(inChildren) { |
||||
return inChildren.querySelector(name); |
||||
} else { |
||||
return document.querySelector(name); |
||||
} |
||||
} |
||||
|
||||
const $all = (name, inChildren) => { |
||||
if(inChildren) { |
||||
return inChildren.querySelectorAll(name); |
||||
} else { |
||||
return document.querySelectorAll(name); |
||||
} |
||||
} |
||||
|
||||
const $id = (name, inChildren) => { |
||||
if(inChildren) { |
||||
return inChildren.children.namedItem(name); |
||||
} else { |
||||
return document.getElementById(name); |
||||
} |
||||
} |
||||
|
||||
const $class = (name) => { |
||||
return document.getElementsByClassName(name); |
||||
} |
||||
|
||||
const $name = (name) => { |
||||
return document.getElementsByTagName(name); |
||||
} |
||||
|
||||
const $filter = (nodes, fn) => { |
||||
return Array.prototype.filter.call(nodes, fn); |
||||
} |
||||
|
||||
const $next = (node) => { |
||||
return node.nextElementSibling; |
||||
} |
||||
|
||||
const $previous = (node) => { |
||||
return node.previousElementSibling; |
||||
} |
||||
|
||||
const $siblings = (node) => { |
||||
return $filter(node.parentNode.children, (child) => { |
||||
return child !== node; |
||||
}); |
||||
} |
||||
|
||||
const $style = (...args) => { |
||||
for(let val of args) { |
||||
if(val[0].length === undefined) { |
||||
val[0].className = val[1]; |
||||
} else { |
||||
for(let element of val[0]) { |
||||
element.className = val[1]; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
const $toggle = (node, className) => { |
||||
node.classList.toggle(className); |
||||
} |
||||
|
||||
const $new = (tag, id, html) => { |
||||
let new_tag = document.createElement(tag); |
||||
new_tag.id = id; |
||||
new_tag.innerHTML = html; |
||||
return new_tag; |
||||
} |
||||
|
||||
const $after = (node, html) => { |
||||
node.insertAdjacentHTML('afterend', html); |
||||
} |
||||
|
||||
const $before = (node, html) => { |
||||
node.insertAdjacentHTML('beforebegin', html); |
||||
} |
||||
|
||||
const $append = (parent, child) => { |
||||
parent.appendChild(child); |
||||
} |
||||
|
||||
const $prepend = (parent, node) => { |
||||
parent.insertBefore(node, parent.firstChild); |
||||
} |
||||
|
||||
const $remove = (parent, child) => { |
||||
parent.removeChild(child); |
||||
} |
||||
|
||||
const $clone = (node) => { |
||||
return node.cloneNode(true); |
||||
} |
||||
|
||||
const $contains = (node, child) => { |
||||
return node !== child && node.contains(child); |
||||
} |
||||
|
||||
const $has = (node, selector) => { |
||||
return node.querySelector(selector) !== null; |
||||
} |
||||
|
||||
const $empty = (node) => { |
||||
return node.innerHTML == ''; |
||||
} |
||||
|
||||
const $style_of = (node, ruleName) => { |
||||
return getComputedStyle(node)[ruleName] |
||||
} |
||||
|
||||
const $attribute_of = (node, name) => { |
||||
return node.getAttribute(name); |
||||
} |
||||
|
||||
const $attribute = (node, name, value) => { |
||||
return node.setAttribute(name, value); |
||||
} |
||||
|
||||
const $html_of = (node) => { |
||||
return node.innerHTML; |
||||
} |
||||
|
||||
const $html = (node, newhtml) => { |
||||
node.innerHTML = newhtml; |
||||
} |
||||
|
||||
const $has_class = (node, className) => { |
||||
return node.classList.contains(className); |
||||
} |
||||
|
||||
|
||||
const $outer_html = (node) => { |
||||
return node.outerHTML; |
||||
} |
||||
|
||||
const $replace_with = (node, newhtml) => { |
||||
node.outerHTML = newhtml; |
||||
} |
||||
|
||||
const $matches = (node, selector) => { |
||||
if(node.matches) { |
||||
return node.matches(selector); |
||||
} else if(node.matchesSelector) { |
||||
return node.matchesSelector(selector); |
||||
} else if(node.mozMatchesSelector) { |
||||
return node.mozMatchesSelector(selector); |
||||
} else if(node.webkitMatchesSelector) { |
||||
return node.webkitMatchesSelector(selector); |
||||
} else if(node.oMatchesSelector) { |
||||
return node.oMatchesSelector(selector); |
||||
} else if(node.msMatchesSelector) { |
||||
return node.msMatchesSelector(selector); |
||||
} else { |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
const $offset = (node) => { |
||||
return {left: node.offsetLeft, top: node.offsetTop}; |
||||
} |
||||
|
||||
const $offset_parent = (node) => { |
||||
return node.offsetParent || node; |
||||
} |
||||
|
||||
const $parent = (node) => { |
||||
return node.parentNode; |
||||
} |
||||
|
||||
const $text_of = (node) => { |
||||
return node.textContent; |
||||
} |
||||
|
||||
const $text = (node, newtext) => { |
||||
node.textContent = newtext; |
||||
} |
||||
|
||||
const $boot = (cb) => { |
||||
document.addEventListener("DOMContentLoaded", cb); |
||||
} |
||||
|
||||
const $off = (node, eventName, eventHandler) => { |
||||
node.removeEventListener(eventName, eventHandler); |
||||
} |
||||
|
||||
const $on = (node, eventName, eventHandler) => { |
||||
node.addEventListener(eventName, eventHandler); |
||||
} |
||||
|
||||
const $fetch_json = async (url, settings) => { |
||||
let req = await fetch(url, settings); |
||||
|
||||
if(req.ok) { |
||||
return await req.json(); |
||||
} else { |
||||
return undefined; |
||||
} |
||||
} |
||||
|
||||
const $now = () => { |
||||
return Date.now(); |
||||
} |
||||
|
||||
const $parse = (htmlString) => { |
||||
let tmp = document.implementation.createHTMLDocument() |
||||
tmp.body.innerHTML = htmlString |
||||
return tmp.body.children; |
||||
} |
Loading…
Reference in new issue