自定義事件

自定義事件:讓一個函數可以具有事件的某些特性。主要是跟函數有關。函數

咱們都知道,相同名字的函數會被覆蓋,如:spa

function show(){
  alert(1);
}

function show(){
  alert(2);
}

function show(){
  alert(3);
}

show()    //這時只會彈出3,由於最後定義的show函數將前邊的覆蓋了。

當咱們換一種寫法,將它寫成事件的樣子,就不會覆蓋:code

window.addEventListener('show',function(){
  alert(1);
},false);

window.addEventListener('show',function(){
  alert(2);
},false);

window.addEventListener('show',function(){
  alert(3);
},false);

show();   //觸發自定義事件

其實show仍是函數,只是讓它具備了事件的特性。這樣添加的事件不會覆蓋。blog

自定義事件:事件

//添加自定義事件io

function addEvent(obj,events,fn){
  obj.handlers=obj.handlers||{};
  obj.handlers[events]=obj.handlers[events] || [];
  obj.handlers[events].push(fn);
  if(obj.addEventListerner){
    obj.addEventListerner(events,fn,false);
  }eles{
    obj.attachEvent('on'+events,fn);
  }
}

 

//主動觸發自定義事件event

function fireEvent(obj,events){

  if(obj.handlers[events]) {

    for (var i=0;i<obj.handlers[events].length;i++){

      obj.handlers[events][i]();

    }

  }

}

addEvent(oDiv,'show',function(){

  alert(3);

});

addEvent(oDiv,'show',function(){

  alert(4);

});

fireEvent(oDiv,'show');    //3,4
相關文章
相關標籤/搜索