如何一次性组合所有事件处理程序?

时间:2014-04-21 06:11:47

标签: javascript

假设事件监听器的处理程序可以多次添加,如下所示:

firstPar.addEventListener("click", myFirstEventHandler, false);
firstPar.addEventListener("click", mySecondEventHandler, false);
etc...

那么,我如何组合代码以便通过缩短来使用:

function allHandler(){
  myFirstEventHandler();
  mySecondEventHandler();
}

,或者

function allHandler(){
   return function(){
      myFirstEventHandler();
     mySecondEventHandler();
  }
}

这样我就可以使用:

firstPar.addEventListener("click",allHandler,false);

或者,另一种方式?

2 个答案:

答案 0 :(得分:0)

第一种方式很好,但我会把事件包括在内:

function myFirstEventHnadler (event) {
    event.stopPropagation(); // To answer your question in the comments.
}

function mySecondEventHandler (event) {
}

function allHandler(event){
    myFirstEventHandler(event);
    mySecondEventHandler(event);
}

演示:http://jsfiddle.net/aUE2L/

答案 1 :(得分:0)

这可能会引入范围复杂性,但为什么不使用匿名函数。

firstPar.addEventListener("click", function(){
  myFirstEventHandler(); 
  mySecondEventHandler();
}, false);