从jcrop回调不被称为
问题描述:
我正在使用最新版本的jquery.jcrop。在图像上调用jcrop()时,裁剪可以正常工作,但回调不会被调用。这使得无法设置jcrop_api以备后用。具体而言,我希望能够更改图像并需要使用destroy()方法。从jcrop回调不被称为
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($) {
答
贾斯汀的代码几乎是文档所说的。但是当你在IE6,7,8中使用API重新编码图像时,它会执行一次然后结束。为什么?因为IE有问题。
启动API的更兼容的方式应该是这样的。
在脚本的最外面部分定义你的api。
var jcrop_api;
然后,当你需要uplaoding在同一页上后启动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();
答
请务必首先声明jcrop_api
变量Jcrop调用的范围之内,像这样。列出的代码只会分配一个变量。如果您仍然怀疑回调正在执行,请将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;
});
}
好的提示。对于长期拖延回来感到抱歉。 – 2012-06-14 22:31:13
@ppumkin:你能给我们一个jsfiddle链接吗? – 2015-05-09 10:09:17
@Persian。你有问题与IE浏览器?只需将'var jcrop_api'移动到全局名称空间。 – ppumkin 2015-05-09 10:13:29