使用方法:可直接使用,或摘出部分需要的函数
事件:
if (typeof JSBL == "undefined"){var JSBL = {};} JSBL.Event = {addEvent: function(obj, evType, fn){if (obj.addEventListener) {obj.addEventListener(evType, fn, false);return true;}else if(obj.attachEvent){obj.attachEvent("on" + evType, fn);}else {obj["on"+type] = fn;}},removeEvent: function(obj, evType, fn){if (obj.removeEventListener) {obj.removeEventListener(evType, fn, false);return true;}else if(obj.detachEvent){obj.detachEvent("on" + evType, fn);}else {obj["on"+type] = null;}},stopBubble : function(e){if( e && e.stopPropagation ){e.stopPropagation();}else{window.event.cancelBubble = true;}},stopDefault : function(e){if(e && e.preventDefault){e.preventDefault();}else{window.event.returnValue = false;}return false;},formatEvent : function(e){e.pageX = e.clientX + document.body.scrollLeft;e.pageY = e.clientY + document.body.scrollTop;return e;},addLoadEvent : function(func){var oldload = window.onload;if(typeof oldload !="function"){window.onload = func;}else{window.onload = function(){oldload;func();} }}} JSBL.DOMoper = {$ : function(elem){return document.getElementById(elem) || document.body[elem] ;} ,prev : function(elem){do {elem = elem.previousSibling;} while ( elem && elem.nodeType != 1) ;return elem;} ,next : function(elem){do {elem = elem.nextSibling;} while ( elem && elem.nodeType != 1);return elem;} ,first : function(elem){elem = elem.firstChild;return elem && elem.nodeType != 1 ? this.next(elem) : elem ;} ,last : function(elem){elem = elem.lastChild;return elem && elem.nodeType != 1 ? this.prev(elem) : elem ;} ,parent : function(elem,num){num = num || 1;for(var i = 0; i<num; i++){if(elem != null) elem = elem.parentNode ;}return elem;} ,hasClass : function(name,type){var r = [];var e = document.getElementsByTagName(type || "*" ) ;for(var j=0; j<e.length; j++){if( e[j].className == name ) {r.push(e[j]);}}return r;} ,//need to checkinsertAfter : function(newElem, targetElem){var parent = targetElem.parentNode;if(parent.lastChild == targetElem){parent.insertBefore(newElem);}else{parent.insertBefore(newElem,targetElem.nextSibling);}}}
DOM操作:
JSBL.DOMoper = {$ : function(elem){return document.getElementById(elem) || document.body[elem] ;} ,prev : function(elem){do {elem = elem.previousSibling;} while ( elem && elem.nodeType != 1) ;return elem;} ,next : function(elem){do {elem = elem.nextSibling;} while ( elem && elem.nodeType != 1);return elem;} ,first : function(elem){elem = elem.firstChild;return elem && elem.nodeType != 1 ? this.next(elem) : elem ;} ,last : function(elem){elem = elem.lastChild;return elem && elem.nodeType != 1 ? this.prev(elem) : elem ;} ,parent : function(elem,num){num = num || 1;for(var i = 0; i<num; i++){if(elem != null) elem = elem.parentNode ;}return elem;} ,hasClass : function(name,type){var r = [];var e = document.getElementsByTagName(type || "*" ) ;for(var j=0; j<e.length; j++){if( e[j].className == name ) {r.push(e[j]);}}return r;} ,//need to checkinsertAfter : function(newElem, targetElem){var parent = targetElem.parentNode;if(parent.lastChild == targetElem){parent.insertBefore(newElem);}else{parent.insertBefore(newElem,targetElem.nextSibling);}}}
结点类型:
var NodeTypes = (function(){var box = {1 : "ELEMENT_NODE",2 : "ATTRIBUTE_NODE",3 : "TEXT_NODE",4 : "CDATA_SECTION_NODE",5 : "ENTITY_REFERENCE_NODE",6 : "ENTITY_NODE",7 : "PROCESSING_INSTRUCTION_NODE",8 : "COMMENT_NODE",9 : "DOCUMENT_NODE",10 : "DOCUMENT_TYPE_NODE",11 : "DOCUMENT_FRAGMENT_NODE",12 : "NOTATION_NODE"}var func = function(){};func.getNodeType = function(name){return box[name];}return func; })()