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