Rob Kinyon - DOM.Element-0.02
NAME
DOM.Element
DESCRIPTION
This provides a group of useful functions for manipulating specific elements within the DOM.
DEPENDENCIES
This requires JSAN to be installed.
STATIC CLASSES
These are classes that are not instantiable, but instead provide a useful set of operations. (In Javascript terms, they do not provide a prototype member, so you cannot call new() upon them.)
DOM.Element
This provides a set of functions that do useful small things to DOM elements.
Every function (unless otherwise noted) passes all arguments through $() (from DOM.Utils).
Please see that documentation for more details.
Unless otherwise noted, every function accepts a variable number of arguments.
SUPPORT
Currently, there is no mailing list or IRC channel. Please send bug reports and patches to the author.
AUTHOR
Rob Kinyon (rob.kinyon@iinteractive.com)
Originally written by Sam Stephenson (sam@conio.net)
My time is generously donated by Infinity Interactive, Inc. http://www.iinteractive.com
/*
*/
try {
JSAN.use( 'DOM.Utils' );
} catch (e) {
throw "DOM.Element requires JSAN to be loaded";
}
if ( typeof( DOM ) == 'undefined' ) {
DOM = {};
}
/*
*/
/*
*/
DOM.Element = {
/*
=item * hide()
This function make sure that every element passed to it is hidden via use of CSS.
=cut
*/
hide: function() {
for (var i = 0; i < arguments.length; i++) {
var element = $(arguments[i]);
if ( element && element.nodeType == 1 )
element.style.display = 'none';
}
}
/*
=item * show()
This function make sure that every element passed to it is visible via use of CSS.
=cut
*/
,show: function() {
for (var i = 0; i < arguments.length; i++) {
var element = $(arguments[i]);
if ( element && element.nodeType == 1 )
element.style.display = '';
}
}
/*
=item * toggle()
For each element passed to it, this function calls hide() if the element is visible and show() if it's hidden.
=cut
*/
,toggle: function() {
for (var i = 0; i < arguments.length; i++) {
var element = $(arguments[i]);
if ( element && element.nodeType == 1 )
element.style.display =
(element.style.display == 'none' ? '' : 'none');
}
}
/*
=item * remove()
This function removes() all the elements specified from the DOM tree.
=cut
*/
,remove: function() {
for (var i = 0; i < arguments.length; i++) {
element = $(arguments[i]);
if ( element )
element.parentNode.removeChild(element);
}
}
/*
=item * getHeight()
This function returns the offsetHeight.
This function only accepts one argument.
=cut
*/
,getHeight: function(element) {
element = $(element);
if ( !element ) return;
return element.offsetHeight;
}
/*
=item * hasClassName()
This function returns true or false depending on if the element has the classname.
This function takes two arguments - the element and the classname.
=cut
*/
,hasClassName: function(element, className) {
element = $(element);
if ( !element || element.nodeType != 1 ) return;
var a = element.className.split(' ');
for (var i = 0; i < a.length; i++) {
if (a[i] == className)
return true;
}
return false;
}
/*
=item * addClassName()
This function adds the classname to the element classlist.
This function takes two arguments - the element and the classname.
=cut
*/
,addClassName: function(element, className) {
element = $(element);
if ( !element || element.nodeType != 1 ) return;
DOM.Element.removeClassName(element, className);
element.className += ' ' + className;
}
/*
=item * removeClassName()
This function removes the classname from the element classlist.
This function takes two arguments - the element and the classname.
=cut
*/
,removeClassName: function(element, className) {
element = $(element);
if ( !element || element.nodeType != 1 ) return;
var newClassnames = new Array();
var a = element.className.split(' ');
for (var i = 0; i < a.length; i++) {
if (a[i] != className) {
newClassnames.push( a[i] );
}
}
element.className = newClassnames.join(' ');
}
/*
=item * cleanWhitespace()
This function returns true or false dependeing on if the element has the classname.
This function takes two arguments - the element and the classname.
=cut
*/
,cleanWhitespace: function() {
var element = $(element);
if ( !element ) return;
for (var i = 0; i < element.childNodes.length; i++) {
var node = element.childNodes[i];
if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
DOM.Element.remove(node);
}
}
/*
*/
};
/*
*/