如何识别插件(croppie或任何其他)初始化?

时间:2018-02-21 19:54:14

标签: javascript jquery plugins croppie

我在上传之前使用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
           }
       });

    }

this answer - 它始终是true(因为它包含了库并且它返回了函数)而我无法检查这种方式; this one同样的问题。

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

P.S。它可能是croppie或任何其他插件。谢谢!

2 个答案:

答案 0 :(得分:0)

if (!jQuery().fn.croppie)代替if(!$('#someID').data('croppie'))

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

}

答案 1 :(得分:0)

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

if (element.className.indexOf('croppie-container') > -1){
  throw new Error("Croppie: Can't initialize croppie more than once");
}