0

次のような基本的な Drop イベント ハンドラーがあります。

function Drop(e){
    e.preventDefault();
    var data=e.dataTransfer.getData("Text");
    var child = $('[target_id="'+data+'"]').get(0);
    e.target.appendChild(child);
}
function DropHandler(){}
DropHandler.prototype={
        ...
    Drop : Drop
}

新しいオブジェクトを作成し、基本的なドロップ ハンドラーを拡張します。

function AdminDropHandler(){}
//Extend the DropHandler
extend(AdminDropHandler,DropHandler);
//Override Drop method in AdminDropHandler
AdminDropHandler.prototype.Drop=function(){
    DropHandler.prototype.Drop.apply(this,arguments);
    var parent_id = e.target.id;// not defined error
    ...
}

DropHandler の機能を拡張できますが、私が使用している e は失われているようです。この問題を解決するには?

4

1 に答える 1

2

e関数のどこにも定義していません。それを定義してみてください:

AdminDropHandler.prototype.Drop = function(e) {
    DropHandler.prototype.Drop.apply(this, arguments);
    var parent_id = e.target.id; // should work now
};

これを行うこともできますが、正式なパラメーターが問題なく機能するため、お勧めしません。

AdminDropHandler.prototype.Drop = function() {
    var e = arguments[0];
    DropHandler.prototype.Drop.apply(this, arguments);
    var parent_id = e.target.id; // should work now
};
于 2012-07-27T08:45:54.830 に答える