使用方法:可直接使用,或摘出部分需要的函数 事件: 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 check insertAfter : 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 check insertAfter : 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; })()