我正在使用:https ://github.com/blueimp/jQuery-File-Upload
基本上,我需要能够保存当前done
回调并在我自己的done
回调中调用它,这非常复杂(我不熟悉 jquery ui 小部件)。
这是我试图工作但无济于事的代码:
var $el = $('#fileupload');
$el.fileupload();
var olddone = $el.fileupload('option', 'done');
$el.fileupload('option', 'done', function(e, data) {
data = ... manipulate data ...;
return olddone(e, data);
});
我已经尝试了主题的各种变体:
return olddone.call(this, e, data);
和:
return olddone.call($el.data('fileupload'), e, data);
和:
return olddone.call($el[0], e, data);
所有错误基本上都告诉我这this
是不正确的,并且上下文不适合所有以下调用。我究竟做错了什么?如何或多或少地将特定回调子类化但仍使用/调用原始回调?
更糟糕的是,复制done
回调的源代码olddone
(而不是保存引用并调用它)似乎也不起作用。
this
jQuery UI Widget 选项函数的上下文是什么?为什么这么复杂?我错过了什么?
编辑:
在阅读了一些小部件文档之后,似乎所有方法总是使用小部件实例调用this
,那么为什么下面的工作不正确呢?
olddone.call($el.data('fileupload'), e, data)
更新:
我试图done:
在这里保留回调options
:https ://github.com/blueimp/jQuery-File-Upload/blob/75d11179fd9c248c061c8eb428782bb556c8db0a/js/jquery.fileupload-ui.js#L139