繁体   English   中英

如何获得jQuery文件上传options.done回调之间?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM