账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于事件代理的一些疑问?
    40
    0

    以下是代码,以及我的理解。
    function addEvent(element, event, listener) {

       if(element.addEventListener){
           element.addEventListener(event,listener,false)
       }
       else if(element.attachEvent()){
           element.attachEvent("on"+event,listener)
       }
       else{
           event["on"+event]=listener;
       }

    }
    function delegateEvents(element,tag,eventName,listener){

       addEvent(element,eventName, function(event){
           if (event.target&&event.target.nodeName.toLowerCase()==tag) {
               listener.call(event.target,event);//listener();
           }
       });

    }
    //首先定义一个函数 delegateEvent();传入四个参数,对象,对象的子集,事件名,响应函数;
    //要为对象添加一个事件,然后传入需要的参数。这里传入的是对象,事件名,一个需要判断的函数;(最后还是,listener)
    //这个函数需要判断,先找到事件源的对象然后判断是不是对象的那个子集。如果是用call将响应函数给事件给事件源对象,event作为参数传入。
    //通过冒泡,最后会传给需要实现的父级对象。
    我的疑问是这里为什么一定要用,call。 //listener.call(event.target,event);
    我自己写的时候加了个listener(event)就完了。但我看他们的代码都有call;没理解call的作用

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部