jquery - jcrop 的回调未被调用

标签 jquery jcrop

我正在使用最新版本的 jquery.jcrop。在图像上调用 jcrop() 时,裁剪可以工作,但不会调用回调。这使得无法设置jcrop_api以供以后使用。具体来说,我希望能够更改图像并需要 destroy() 方法。

function setJCrop() {
    //Set image for cropping
    jQuery('#preview').Jcrop( {
        minSize : [126, 126],
        setSelect : [ 0, 0, 126, 126 ],
        //onChange: updateMeasurements,
        onSelect: updateMeasurements,
        aspectRatio: 1
    }, function() {
        jcrop_api = this;  //callback not being called
    } );
}

当切换到 jQuery 就绪函数的调用时,这种情况开始发生:

jQuery(document).ready(function($) {

最佳答案

Justin 的代码与文档中的内容基本一致。但是,当您使用 IE6、7、8 中的 API 重新编辑图像时,它会执行一次然后失败。为什么?因为 IE 有问题。

比较兼容的API启动方式应该是这样的。

在脚本的最外层定义您的 api。

var jcrop_api;

然后,当你需要启动 API 时,例如在同一页面上上传后..你这样做(这行是让 IE 和其他奇怪的浏览器满意的)我使用两个标签,因为有时我的cropper被使用一个母版页,我仅将其留作示例。另外,我没有设置任何选项,但如果你愿意,你可以设置。

jcrop_api = $.Jcrop($('#SourceImage, #body_SourceImage'), {});

然后对于每个图像,您可以启动裁剪器

       jcrop_api.setOptions({
            boxWidth: 500,
            onSelect: updateCoords,
            minSize: [thisImage.Min.Width, thisImage.Min.Height],
            aspectRatio: thisImage.AspectRatio  //1.3 for example
        });
        jcrop_api.setImage(uploadLocation + fileName);

重要的是,当您完成裁剪后,您必须销毁 API,然后重新启动它。再次强调——只是为了让所有浏览器满意。

 jcrop_api.destroy();

关于jquery - jcrop 的回调未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10197077/

相关文章:

javascript - 如何修复 ChartJS 图例不工作的问题

javascript - 无法访问 Jquery JCrop api

javascript - 在 GWT JSNI 中调用 JCrop

ruby-on-rails - 通过 rails 4 使用 jCrop 和 cloudinary 在创建图像之前进行裁剪

jquery - Jcrop 保存上一张图像

php - Jquery、Ajax保存到数据库

javascript - 来自 datepicker onSelect 的 Jquery ajax 调用消失了文本框

jquery - 向上滚动时滚动动画不起作用

javascript - 鼠标悬停在 div 上时 chrome 中的闪烁问题

jquery - 在响应式图像上使用 jcrop