将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?
答案 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]" />