<script>
Croppic = function (id, options) {
var that = this;
that.id = id;
that.obj = $('#' + id);
that.outputDiv = that.obj;
};
Croppic.prototype = {
form: {}
};
init: function () {
var that = this;
var cropControlUpload = '';
if (that.options.customUploadButtonId === '') {
cropControlUpload = '<i class="cropControlUpload"></i>';
}
var cropControlRemoveCroppedImage = '<i class="cropControlRemoveCroppedImage"></i>';
if ($.isEmptyObject(that.croppedImg)) {
cropControlRemoveCroppedImage = '';
}
if (!$.isEmptyObject(that.options.loadPicture)) {
cropControlUpload = '';
}
var html = '<div class="cropControls cropControlsUpload"> ' + cropControlUpload + cropControlRemoveCroppedImage + ' </div>';
that.outputDiv.append(html);
var formHtml = '<form class="' + that.id + '_imgUploadForm" style="visibility: hidden;"> <input type="file" name="img" accept="image/*" id="' + that.id + '_imgUploadField"> </form>';
that.outputDiv.append(formHtml);
that.form = that.outputDiv.find('.' + that.id + '_imgUploadForm');
},
reset:function (){
var that=this;
that.init();//This initializes using init function
}
</script>
我有一个裁剪模块,它执行类似上面的操作。因此,每次调用reset时,都会使用init函数初始化模块。
然而,输出没有按预期发生,当重置被调用两次以上时,表单对象显示出这种行为。
当重置被调用两次时,结果是这样的。不是删除属性 0 ,而是附加一个新属性 1 。
如果我再次拨打重置电话,这件事就会继续。
所以当发生这种情况时,Mozilla中的 Inspector 会在多次调用重置时显示多个表单(这里我调用了两次重置,因此在 Inspector 中有两个表单) 。
为了解决这个问题,我尝试删除属性 0 ,甚至尝试删除整个对象并试图创建一个新对象,但没有任何帮助。
if(that.form.hasOwnProperty("0"))
{
delete that.form["0"];// Here i even did this delete that.form;
that.form = that.outputDiv.find('.' + that.id + '_imgUploadForm');
}else{
that.form = that.outputDiv.find('.' + that.id + '_imgUploadForm');
}
我做了所有事情,但同样的事情发生。如果 0 存在,我如何确保它不会添加更多属性。如果 0 存在,只需替换 0 由新的。