[英]How to get inbetween jquery file upload options.done callback?
我正在使用: 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控件选项功能的情况下? 为什么这么复杂? 我想念什么?
编辑:阅读一些小部件文档后,似乎所有的方法都总是叫与微件实例作为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
弄清楚我在滥用传入的数据,实际上我只需要正确使用它即可。 这是完成此工作所需的最终代码。
var olddone = $el.data('fileupload').options.done;
$el.fileupload('option', 'done', function(e, data) {
data.result = ... manipulate data ...;
return olddone.call(this, e, data);
});
由于某些原因olddone.call(this, ...)
仍然是必需的。 不知道为什么, this
是从当前上下文中继承,是不是不确定的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.