我正在使用最新版本的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 ready函数的调用时,这开始发生了:
jQuery(document).ready(function($) {
答案 0 :(得分:0)
确保首先在Jcrop调用范围之外声明jcrop_api
变量,就像这样。列出的代码只会分配一个变量。如果您仍然怀疑回调是否正在执行,请在其中放置alert()
进行测试。
var jcrop_api;
function setJCrop() {
//Set image for cropping
$('#preview').Jcrop( {
minSize : [126, 126],
setSelect : [ 0, 0, 126, 126 ],
//onChange: updateMeasurements,
onSelect: updateMeasurements,
aspectRatio: 1
},function(){
jcrop_api = this;
} );
}
答案 1 :(得分:0)
贾斯汀的代码几乎就是文档所说的。但是当你进入reolaoding图像时,我们会在IE6,7,8中使用它,然后它就会失败。为什么?因为IE有问题。
启动API的兼容方式应该是这样的。
在脚本的最外层定义你的api。
var jcrop_api;
然后当你需要启动API时,例如在同一页面上进行上传后...你这样做(这条线是让IE和其他奇怪的浏览器感到高兴的原因)我使用两个标签,因为有时我的剪草机被用于一个母版页,我只留下它。此外,我没有设置任何选项,但如果你愿意,你可以。
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();