最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

給事件響應函數(shù)傳參數(shù)的四種方式小結(jié)

 更新時間:2013年12月05日 09:27:35   作者:  
這篇文章主要介紹了給事件響應函數(shù)傳參數(shù)的四種方式。需要的朋友可以過來參考下,希望對大家有所幫助

如何給事件handler傳參數(shù)?在剛剛接觸Javascript的時候,由于對閉包理解不深刻,常常糾結(jié)于該問題。

在討論群里也經(jīng)常碰到這樣的問題,如下

復制代碼 代碼如下:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>如何給事件handler傳參數(shù)?</title>
</head>
<body>
 <a href="#" id="aa">Click me</a>
 <script type="text/javascript">
  var E = {
   on : function(el, type, fn){
    el.addEventListener ?
     el.addEventListener(type, fn, false) :
     el.attachEvent("on" + type, fn);
   },
   un : function(el,type,fn){
    el.removeEventListener ?
     el.removeEventListener(type, fn, false) :
     el.detachEvent("on" + type, fn);  
   }
  };

  var v1 = 'jack', v2 = 'lily';      
  function handler(arg1,arg2){
   alert(arg1);
   alert(arg2);
  }

  // 如何把參數(shù)v1,v2傳給handler?
  // 默認事件對象將作為handler的第一個參數(shù)傳入,
  // 這時點擊鏈接第一個彈出的是事件對象,第二個是undefined。    
  E.on(document.getElementById('aa'),'click',handler);
 </script>
</body>
</html>

如何把參數(shù)v1,v2傳給handler?默認事件對象將作為handler的第一個參數(shù)傳入,這時點擊鏈接第一個彈出的是事件對象,第二個是undefined。

方案一 ,未保留事件對象作為第一個參數(shù)傳入

復制代碼 代碼如下:

function handler(arg1,arg2){
 alert(arg1);
 alert(arg2);
}
E.on(document.getElementById('aa'),'click',function(){ 
 handler(arg1,arg2); 
});

方案二,保留事件對象作為第一個參數(shù) 
復制代碼 代碼如下:

function handler(e,arg1,arg2){
 alert(e);
 alert(arg1);
 alert(arg2);
}
E.on(document.getElementById('aa'),'click',function(e){
 handler(e,arg1,arg2);
});

方案三,給Function.prototype添加getCallback,不保留事件對象
復制代碼 代碼如下:

Function.prototype.getCallback = function(){
 var _this = this, args = arguments;  
 return function(e) {
        return _this.apply(this || window, args);
    };
}
E.on(document.getElementById('aa'),'click',handler.getCallback(v1,v2));

方案四,給Function.prototype添加getCallback,保留事件對象作為第一個參數(shù)傳入
復制代碼 代碼如下:

Function.prototype.getCallback = function(){
 var _this = this, args = [];
 for(var i=0,l=arguments.length;i<l;i++){
  args[i+1] = arguments[i];
 }
 return function(e) {
  args[0] = e;
        return _this.apply(this || window, args);
    };
}
E.on(document.getElementById('aa'),'click',handler.getCallback(v1,v2));

相關(guān)文章

最新評論

甘洛县| 西安市| 黔南| 纳雍县| 淮北市| 神池县| 象山县| 渝北区| 双桥区| 延安市| 昌吉市| 石景山区| 乌兰察布市| 乡宁县| 喀喇沁旗| 宁化县| 驻马店市| 临漳县| 东莞市| 谢通门县| 沿河| 兴文县| 泽库县| 嫩江县| 中山市| 广平县| 南雄市| 吉安市| 翼城县| 平乐县| 丹东市| 墨竹工卡县| 杭锦旗| 凤冈县| 图们市| 双辽市| 上高县| 五家渠市| 封开县| 卢龙县| 遂平县|