0
我有一个基本的Drop事件处理程序如下所示:使用魔法E在扩展功能
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似乎丢失。如何解决这个问题呢?
是不是在DropHandler.prototype.Drop?我将e传递给它。当我调用DropHandler.prototype.Drop.apply(this,arguments)时,它会扩展它吗? – panda 2012-07-27 08:48:47
@PandaYang你通过'arguments'隐式地传入'e',它没有在函数本身中定义。你可以使用'var e = arguments [0];'或者像我这样的正式参数。调用某个其他函数不会在调用函数中定义变量。 – Esailija 2012-07-27 08:50:24
我明白了,所以AdminDropHandler.Drop中的e变成了正确的参数[0]? – panda 2012-07-27 08:52:27