亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用addEventListener添加事件時如何傳遞數據?

使用addEventListener添加事件時如何傳遞數據?

FFIVE 2018-09-07 14:14:21
我想在DOM元素綁定事件時順便能傳一些值給回調函數;我使用的方法是:這樣可以實現參數的,但是在用到bindFunction函數時出現一個問題,就是他返回的是一個匿名函數,造成添加給dom元素的是一個匿名函數而不是那個函數名,這樣就導致事件移除不了。后來我想了一個解決方法就是在bindFunction函數中存儲起這個匿名函數,移除時就能指定到了,于是改造了一下bindFunction這個函數,然后移除的時候我就可以這樣似乎可以解決掉問題,不過總感覺這種方法好像不是很好,還有什么好的方法進行傳數據的嗎,在綁定事件時。
查看完整描述

1 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

我覺得這樣可能更簡單一些,綁定事件時返回一個用來解綁的函數,需要解綁時就直接調用它,就可以了。

function addEvent(element,type,fn,data,_this){

    _this = _this ? _this : element;

    var bound = bindFunction(_this,fn,data);

    if(element.addEventListener){

        element.addEventListener(type,bound,false);

    }else if(element.attachEvent){

        element.attachEvent('on'+type,bound);

    }else{

        element['on'+type] = fn.apply(_this,[arguments,data]);

    }

    return function(){

        if(element.removeEventListener){

            element.removeEventListener(type,bound,false);

        }else if(element.attachEvent){

            element.detachEvent('on'+type,bound);

        }else{

            element['on'+type] = null;

        }

    };

}


//綁定

var unbinder = addEvent(/*此處省略*/);


//解除上面的綁定

unbinder();


查看完整回答
反對 回復 2018-10-10
  • 1 回答
  • 0 關注
  • 1124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號