ElementExtender.js
/**
* ElementWrapper
* version 0.8
* written by 1000ch
**/
( function( window, undefined ) {
var document = window.document;
var navigator = window.document;
var location = window.location;
var ElementWrapper = ( function() {
var ElementWrapper = function() {
this.elements = [];
this.utils = {
//judge value is number or not
isNumber : function( value ) {
return !isNaN( parseFloat( value ) ) && isFinite( value );
},
//add event to element
bind : function( element, trigger, callback ) {
if( element.addEventListener ) {
//if addEventListener is defined
element.addEventListener( trigger, callback );
} else if( element.attachEvent ) {
//if attachEvent is defined
element.attachEvent( trigger, callback );
}
},
//remove event from element
unbind : function( element, trigger, callback ) {
if( element.removeEventListener ) {
//if removeEventListener is defined
element.removeEventListener( trigger, callback );
} else if( element.detachEvent ) {
//if detachEvent is defined
element.detachEvent( trigger, callback );
}
}
};
}
ElementWrapper.prototype = {
constructor : ElementWrapper,
id : function( selector ) {
//define return object
var ret = new ElementWrapper();
//if selector is undefined
if( !selector ) {
return ret;
}
//get element by id
var buff = document.getElementById( selector );
//add to this element container
ret.elements.push( buff );
//return this object
return ret;
},
names : function( selector ) {
//define return object
var ret = new ElementWrapper();
//if selector is undefined
if( !selector ) {
return ret;
}
//get elements by name
var buff = document.getElementsByName( selector );
//add to this element container
for( var i = 0;i < buff.length;i++ ) {
ret.elements.push( buff[i] );
}
//return this object
return ret;
},
tagNames : function( selector ) {
//define return object
var ret = new ElementWrapper();
//if selector is undefined
if( !selector ) {
return ret;
}
//get elements by tag name
var buff = document.getElementsByTagName( selector );
//add to this element container
for( var i = 0;i < buff.length;i++ ) {
ret.elements.push( buff[i] );
}
//return this object
return ret;
},
classNames : function( selector ) {
//define return object
var ret = new ElementWrapper();
//if selector is undefined
if( !selector ) {
return ret;
}
//get elements by class name
var buff = document.getElementsByClassName( selector );
//add to this element container
for( var i = 0;i < buff.length;i++ ) {
ret.elements.push( buff[i] );
}
//return this object
return ret;
},
add : function( addElements ) {
//if addElements is undefined
if( !addElements ) {
return this;
}
//if addElements is not instanceof ElementWrapper
if( !( addElements instanceof ElementWrapper ) ) {
return this;
}
//add this struct object to own elements
for( var i = 0;i < addElements.size();i++ ) {
this.elements.push( addElements.get( i ) );
}
//return this object
return this;
},
size : function() {
return this.elements.length;
},
get : function( index ) {
return this.elements[index];
},
odd : function() {
//define return object
var ret = new ElementWrapper();
for( var i = 0;i < this.size();i += 2 ) {
ret.elements.push( this.get( i ) );
}
return ret;
},
even : function() {
//define return object
var ret = new ElementWrapper();
for( var i = 1;i < this.size();i += 2 ) {
ret.elements.push( this.get( i ) );
}
return ret;
},
each : function( callback ) {
for( var i = 0;i < this.elements.length;i++ ) {
callback.apply( this.get( i ), arguments );
}
},
css : function( key, value ) {
for( var i = 0;i < this.size();i++ ) {
this.get( i ).style[key] = value;
}
//return this object
return this;
},
attr : function( key, value ) {
for( var i = 0;i < this.size();i++ ) {
this.get( i ).setAttribute( key, value );
}
//return this object
return this;
},
bind : function( trigger, callback ) {
for( var i = 0;i < this.size();i++ ) {
this.utils.bind( this.get( i ), trigger, callback );
}
//return this object
return this;
},
unbind : function( trigger, callback ) {
for( var i = 0;i < this.size();i++ ) {
this.utils.unbind( this.get( i ), trigger, callback );
}
//return this object
return this;
},
onCopy : function( callback ) {
this.bind( "copy", callback );
},
onCut : function( callback ) {
this.bind( "cut", callback );
},
onPaste : function( callback ) {
this.bind( "paste", callback );
},
onFocus : function( callback ) {
this.bind( "focus", callback );
},
onBlur : function( callback ) {
this.bind( "blur", callback );
},
onChange : function( callback ) {
this.bind( "change", callback );
},
onClick : function( callback ) {
this.bind( "click", callback );
},
onDoubleClick : function( callback ) {
this.bind( "dblclick", callback );
},
onContextMenu : function( callback ) {
this.bind( "contextmenu", callback );
},
onKeyDown : function( callback ) {
this.bind( "keydown", callback );
},
onKeyPress : function( callback ) {
this.bind( "keypress", callback );
},
onKeyUp : function( callback ) {
this.bind( "keyup", callback );
},
onMouseDown : function( callback ) {
this.bind( "mousedown", callback );
},
onMouseUp : function( callback ) {
this.bind( "mouseup", callback );
},
onMouseOver : function( callback ) {
this.bind( "mouseover", callback );
},
onMouseMove : function( callback ) {
this.bind( "mousemove", callback );
},
onMouseOut : function( callback ) {
this.bind( "mouseout", callback );
},
onResize : function( callback ) {
this.bind( "resize", callback );
},
onScroll : function( callback ) {
this.bind( "scroll", callback );
}
};
return new ElementWrapper();
} )();
window.ElementWrapper = window.$ = ElementWrapper;
} )( window );