0

この概念を理解するのに少し苦労しています。イベントとハンドラーを要素に割り当てるループがあります。問題は、コールバック内でメンバー関数にもアクセスしていることです。this(オブジェクトを参照して)正しいものを取得するようにスコープを設定しましたが、e.targetの場合、正しい要素を取得していません。だから私も正しい要素が欲しいと思います。以下はコードです。

for(var i in type) {
    element.addEventListener(type[i].toLowerCase(), (function (_self, handler) { //Handle this reference in event callback  
        //Using a closure to return callback with correct context                   
        return function (event) {
            //console.log(arguments);
            //console.log(this);
            _self[handler].apply(_self, arguments);
        }
    }(this, type[i])), capture);
}

今私のハンドラ関数内:

dragStart: function (e) {
    console.log(e);
    var that = e.target,
        sectionName = that.id,
        interactionTarget = that.childNodes[0].alt;

    e.dataTransfer.effectAllowed = 'move';
    e.dataTransfer.setData('text/html', that.innerHTML);
    this.dragSrcEl = that;
    that.classList.add('fade');
    this.triggerEvent("whatever");
},

triggerEventメンバー関数です。私が欲しいのはthis、オブジェクトに対応する正しいものと、イベントがバインドされている正しい要素です。

4

1 に答える 1