Javascript jQuery插件:防止覆盖选项
我做了一个自定义插件来为插件添加公共功能和验证。这是一份简历,这样你就可以了解你的想法Javascript jQuery插件:防止覆盖选项,javascript,jquery,jquery-file-upload,Javascript,Jquery,Jquery File Upload,我做了一个自定义插件来为插件添加公共功能和验证。这是一份简历,这样你就可以了解你的想法 $.fn.myCustomUpload = function(options) { if (!$(this).is('input:file')) { return false; } $(this).fileupload({ maxChunkSize: options.maxChunkSize, maxFileSize: options
$.fn.myCustomUpload = function(options) {
if (!$(this).is('input:file')) {
return false;
}
$(this).fileupload({
maxChunkSize: options.maxChunkSize,
maxFileSize: options.maxFileSize,
acceptFileTypes: options.allowedTypes,
type: 'POST',
dataType: 'json',
add: function (e, data) {
// common validations
},
start: function (e) {
// foo
if (options.onUploadStart) {
options.onUploadStart();
}
},
fail: function(e, data) {
// foo
if (options.onUploadError) {
options.onUploadError(result);
}
},
done: function(e, data) {
// foo
if (options.onUploadDone) {
options.onUploadDone(media_data);
}
}
});
};
问题是我进行了验证或处理数据,并返回结果和回调。但是,我注意到回调在下一次调用插件时被覆盖。。所以,我在一个地方上传了一个文件,然后在另一个地方重新显示结果!我做错了什么
我是否需要将选项存储到每个输入元素,如.data()
编辑2:修改html和JS结构(不起作用)
编辑:我用两种方式使用这个插件
$input.myCustomUpload({
// ...
onUploadStart: this.onNewPostUploadStart.bind(this),
onUploadProgress: this.onNewPostUploadProgress.bind(this), //this reference to my object
onUploadError: this.onNewPostUploadError.bind(this),
// ...
});
$uploads_buttons = $container.find('._attach_image');
$uploads_buttons.each(function() {
var $upload_button = $(this);
var $parent = $upload_button.parents('._post-container');
$upload_button.myCustomUpload({ /*options, callbacks, etc*/});
});
$input
有自己的回调,$uploads\u按钮与$input
按钮相同,但不同
谢谢。您是否碰巧使用相同的选项对象多次调用此插件,并在两者之间修改相同的对象?我相信通常情况下,插件会使用提供给它的选项和$.extend({},options)来创建它们的本地副本。因此,如果更改了原始对象的内容,它们将不会影响jQuery.fn中的本地copySide注释。此
已经是jQuery对象。在上面的代码中,不需要用$()来包装它。您注释掉了您作为方法的选项传递的内容,这是我们中一些人的主要问题。“不,这是另一个单独的输入”HTML中存在多少不同的
元素?如果(!$(this).is('input:file'){return false;}
的目的是什么?您是否可以在问题中包含HTML并创建一个stacksnippet进行演示?看见