jcrop_api未定义?

时间:2012-12-13 17:25:19

标签: jquery jcrop

将Jcrop添加到Javascript中的函数时,jcrop_api变量变为未定义。当我使用$(document).ready(function() { ... });在窗口加载时创建Jcrop时,我有插件工作(包括api)
问题是我希望用户能够保持宽高比,或者不是简单地通过选中或取消选中复选框。所以我有以下内容:

$(document).ready(function() {
    $('#aspectratio').click(function() {
        alert(jcrop_api);
        if (!$(this).is(':checked')) {
            jcrop_api.setOptions({
                aspectRatio: 0
            });
        } else {
            jcrop_api.setOptions({
                aspectRatio: 31 / 12
            });
        }
    });
}

function stopUpload(success, newfile) {
    $('#target').attr('src', newfile);
    $('#preview').attr('src', newfile);
    $('#myfile').val('');
    $('#options').css('display', 'block');
    $('#target').Jcrop({
        onChange: updatePreview,
        onSelect: updatePreview,
        aspectRatio: 31 / 12
    }, function() {
        // Use the API to get the real image size
        var bounds = this.getBounds();
        boundx = bounds[0];
        boundy = bounds[1];
        // Store the API in the jcrop_api variable
        var jcrop_api = this;
    });
}

我已经看到了其他答案,例如以下列方式调用Jcrop:

$.Jcrop($('#cropbox_full'));

出于某种原因,在执行此操作时,jcrop框根本不会出现。很奇怪。所以基本上,我的问题是,我做错了什么,以及如何解决这个问题(以类似于上面的方式)所以我可以通过点击复选框更改aspectRatio?

2 个答案:

答案 0 :(得分:1)

好的,这很简单......变量(jcrop_api)刚刚在函数中设置,因此无法从函数外部访问。我通过将其设置为全局变量来修复此问题。我不知道这是不好的做法,但如果有人有更好的解决方案,我会很高兴听到它。

答案 1 :(得分:0)

需要首先定义

jcrop_api ,这是总和来学习如何定义 jcrop_api 变量

var jcrop_api;
var cWidth = 100;
var cHeight = 100;

jQuery(function($){

  // initialize jcrop
  jcrop_api = $.Jcrop('#target');

  // set the selection area
  jcrop_api.animateTo([0,0,cWidth,cHeight]);

});

在身体部位图片标记

<img src="demo_files/sago.jpg" id="target" alt="[Jcrop Example]" />