【问题标题】:How to identify plugin (croppie or any other) initialized?如何识别已初始化的插件(croppie 或任何其他)?
【发布时间】:2018-08-01 12:48:30
【问题描述】:

我在上传之前使用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 同样的问题。

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

附:它可以是croppie 或任何其他插件。谢谢!

【问题讨论】:

    标签: javascript jquery plugins croppie


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我不认为croppie添加了这样的数据属性,可能会更新您的答案以检查croppie添加的类? if(jQuery('.cropimagecontainer').hasClass('croppie-container')) // 销毁croppie ]
      猜你喜欢
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多