1

我在上传之前使用croppie来编辑图片。任务是在不重新加载页面的情况下销毁并再次初始化这个插件。

所以我已经拥有了:

$('#someID').croppie({
   viewport: {
      width: 128,
      height: 128
   }
});
$('#someID').croppie('bind', {
   url: 'some base64 encoded image'
});

经过一些操作 - 我隐藏了插件:

$('#someID').toggle();
$('#someID').croppie('bind');

毕竟有些情况下我再次需要croppie并且js代码的第一部分再次工作,所以我在控制台中有:

croppie.min.js:1 Uncaught Error: Croppie: Can't initialize croppie more than once

显然我现在只是检查当前元素的初始化插件。我发现了什么:

// it supposed to be the answer, however it doesn't work correctly for me.    
if (!jQuery().fn.croppie) {

       $('#someID').croppie({
           viewport: {
                width: 128,
                height: 128
           }
       });

    }

这个答案- 它总是true(因为它包含库并且它返回函数),我无法检查这种方式; 是同一个问题。

那么,如何确保该插件现在已初始化?

PS它可能是croppie或任何其他插件。谢谢!

4

2 回答 2

0

而不是if (!jQuery().fn.croppie),检查if(!$('#someID').data('croppie'))

if(!$('#someID').data('croppie'))
{
 $('#someID').croppie({
       viewport: {
            width: 128,
            height: 128
       }
   });

}
于 2019-06-14T09:59:20.583 回答
0

在croppie.js 中仅注释第1487 行的条件

if (element.className.indexOf('croppie-container') > -1){
  throw new Error("Croppie: Can't initialize croppie more than once");
}
于 2020-10-08T05:54:29.513 回答