Skip to content

Instantly share code, notes, and snippets.

@kangax
Created September 5, 2008 20:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kangax/9021 to your computer and use it in GitHub Desktop.
Save kangax/9021 to your computer and use it in GitHub Desktop.
(function() {
var getText, setText;
if ('innerText' in document.documentElement) {
getText = function(element, shallow) {
return (!shallow) ? $(element).innerText : getText(element);
}
setText = function(element, text) {
(element = $(element)).innerText = text;
return element;
}
} else {
getText = function(element, shallow) {
return $(element).textNodes(shallow)
.inject('', function(text, node) { return node.nodeValue });
}
setText = function(element, text) {
element = $(element);
var nodes = Element.textNodes(element);
if (nodes.length) {
nodes.shift().nodeValue = text;
nodes._each(Element.remove);
}
else Element.insert(element, text);
return element;
}
}
Element.addMethods({
textNodes: function(element, shallow) {
var results = [], node = $(element).firstChild;
while (node) {
if (node.nodeType === 3)
results.push(node);
else if (!shallow && node.hasChildNodes())
results = results.concat(arguments.callee(node));
node = node.nextSibling;
}
return results;
},
getText: getText,
setText: setText
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment