替换原型对象属性

时间:2016-03-17 07:52:40

标签: javascript jquery

<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 enter image description here

当重置被调用两次时,结果是这样的。不是删除属性 0 ,而是附加一个新属性 1 enter image description here

如果我再次拨打重置电话,这件事就会继续。

所以当发生这种情况时,Mozilla中的 Inspector 会在多次调用重置时显示多个表单(这里我调用了两次重置,因此在 Inspector 中有两个表单) 。 enter image description here

为了解决这个问题,我尝试删除属性 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 由新的。

完整代码http://codepad.org/03EiunbL

0 个答案:

没有答案