我和jcrop有这个奇怪的问题,我花了好几个小时试图找出答案。问题是我不能以demo中显示的方式拖动/移动选择。
如果我尝试使用setSelect
初始化脚本,以便在页面加载时显示带有选择的图像, 选项可以移动,但是一旦我使用鼠标进行选择,无论我做什么,这个选择(当然取代了最初的选择)都无法拖动。但是,它可以通过键盘移动,但我不能依赖使用键盘的人。
我已经google了一下,唯一接近的是这篇文章:Cannot drag selection in Jcrop, what could break it?但这并不能解决我的问题(而且我没有相关的定位我知道所以它不会首先是问题的原因。)
我在mac上使用jquery 1.4.2和jcrop 0.9.8进行了以下设置(已尝试过Firefox和Safari):
function updateCoords(c) {
$('#x').val(c.x);
$('#y').val(c.y);
$('#w').val(c.w);
$('#h').val(c.h);
};
function checkCoords() {
if (parseInt($('#w').val())) return true;
alert('Please select a crop region then press submit.');
return false;
};
$('#jcrop_target').Jcrop({
minSize: [ 620,400 ],
maxSize: [ 620,400 ],
onSelect: updateCoords,
onChange: updateCoords
});
但我也尝试使用简单的$('#jcrop_target').Jcrop();
来确保它不是导致冲突的其他函数。
任何输入都将非常非常感激。提前谢谢!
拉斯
答案 0 :(得分:1)
答案 1 :(得分:1)
我在一个项目中遇到了问题,有人在CSS中的所有div上声明了相对位置。不幸的是,修复它需要太多的工作,所以我不得不深入挖掘代码以找到修复方法。
使用最新的jCrop库(发布时Jcrop-0.9.12)对脚本进行了一些小修改,为我解决了问题。
在jquery.Jcrop.js的第1122行附近看起来像这样:
if (Touch.support) {
$track.bind('touchstart.jcrop', Touch.createDragger('move'));
}
$img_holder.append($track);
disableHandles();
通过将$ img_holder.append($ track)更改为$ hdl_holder.append($ track)并确保$ hdl_holder是绝对位置,它为我解决了这个问题。有相对定位和zindexing的东西正在为我杀死它。
我对剧本的两处更改是:
第350行jquery.Jcrop.js:
$hdl_holder = $('<div />').width('100%').height('100%').css('zIndex', 320),
已更改为:
$hdl_holder = $('<div />').width('100%').height('100%').css({
zIndex: 320,
position: 'absolute'
}),
第1122行jquery.Jcrop.js:
$img_holder.append($track);
已更改为:
$hdl_holder.append($track);