原生js事件

(function(window){    //建立事件函數    function myAddEvent(obj,ev,fn){        if(obj.attachEvent){            obj.attachEvent('on'+ev,function(e){                if(fn.call(obj)==false){                    //阻止冒泡                    e.cancelBubble = true;                    return false;                }            })        }else{            obj.addEventListener(ev,function(e){                if(fn.call(obj)==false){                    e.stopPropagation();                    e.preventDefault();                    return false;                }            })        }    }    //class選擇器調用函數    function getByClass(oParent,sClass){        var aEle=oParent.getElementsByTagName('*');//選擇父元素的全部元素        var aResult=[];        var re=new RegExp('\\b'+sClass+'\\b','i');//正則邊界        var i=0;        for(i=0;i<aEle.length;i++){            if(re.test(aEle[i].className)){                aResult.push(aEle[i]);            }        }        return aResult;    }    //定義函數    function blind_fn(arg){        this.elements = [];        switch (typeof arg){            case 'function':                myAddEvent(window,'load',arg);                break;            case 'string':                switch (arg.charAt(0)){                    case '#':                        var self = document.getElementById(arg.substring(1));                        this.elements.push(self);                    case '.':                        this.elements=getByClass(document,arg.substring(1));                        break;                    default://標籤                        this.elements=document.getElementsByTagName(arg);                }        }    }    var zhanglei = function(arg){        return new blind_fn(arg);    };    blind_fn.prototype = {        css:function(attr,value){            if(arguments.length == 2){                for(var i =0;i<this.elements.length;i++){                    this.elements[i].style[attr] = value;                }            }else if(arguments.length==1){                for(var i = 0;i<this.elements.length;i++){                    for(var k in attr){                        this.elements[i].style[k]=attr[k];                    }                }            }            return this;        },        click:function(fn){            for(var i = 0;i<this.elements.length;i++){                myAddEvent(this.elements[i],'click',fn);            }            //鏈式操做            return this;        },        hide:function(){            for(var i = 0;i<this.elements.length;i++){                this.elements[i].style.display = 'none';            }            return this;        },        show:function(){            for(var i = 0;i<this.elements.length;i++){                this.elements[i].style.display = 'initial';            }            return this;        },        hover:function(fnover,fnout){            for(var i = 0;i<this.elements.length;i++){                myAddEvent(this.elements[i],'mouseover',fnover);                myAddEvent(this.elements[i],'mouseout',fnout);            }            return this;        },        attr:function(attr,value){            if(arguments.length==2){                for(var i = 0;i<this.elements.length;i++){                    this.elements[i].setAttribute(attr,value);                }            }else if(arguments.length==1){                if(typeof attr=='string'){                    return this.elements[0].getAttribute(attr);                }            }            return this;        },        addClass:function(str){            for(var i = 0;i<this.elements.length;i++){                if(this.elements[i].className==''){                    this.elements[i].className+=str;                }else{                    this.elements[i].className+=' '+str;                }            }            return this;        },        removeClass:function(str){            for(var i = 0;i<this.elements.length;i++){                if(!str){                    this.elements[i].className='';                }else{                    var str_ = this.elements[i].className.split(' ');                    for(var j = 0;j<str_.length;j++){                        if(str_[j]==str){                            str_.splice(j,1);                            this.elements[i].className = str_.join(' ');                        }                    }                }            }            return this;        },        eq:function(n){            return new blind_fn(this.elements[n]);        },        index:function(){            var child = this.elements[0].parentNode.children;            for(var i=0;i<child.length;i++){                if(child[i]==this.elements[0]){                    return i;                }            }        },        toggle:function(){            var _arguments=arguments;            function addToggle(obj){                var count=0;                myAddEvent(obj,'click',function(){                    _arguments[count++%_arguments.length].call(obj);                })            }            var i=0;            for(i=0;i<this.elements.length;i++){                addToggle(this.elements[i]);            }        }    };    window.$ = zhanglei;})(window);
相關文章
相關標籤/搜索