无法在Jcrop中拖动选择,有什么可以打破它?

我很茫然。 我正在使用JQuery 1.4.2和JCrop 0.98。 其他一切工作正常,但一旦创建我就无法移动选择。 当我将鼠标hover在选择上并单击时,没有任何反应。

我有JQuery库,JCrop库和JCrop css文件都包含在内。 这是一个非常干净的页面,没有其他很多东西。 我不知道我是不是在我自己的javascript和css中意外地覆盖了某些东西,它打破了JCrop,两者都有相当多。 但Firebugs并没有改变任何事情。

虽然他们使用不同版本的jquery,但我的浏览和服务器上的教程工作正常。 但是,当我将它们最初使用的版本替换为我使用的版本时,它们继续正常工作。 所以它必须与我的javascript或css有关。

我在这里完全失去了,我正在考虑我可以想到的问题,但我甚至不知道在哪里看。 有没有其他人遇到过这个问题? 问题是什么,你是如何解决的? 我应该在哪里寻找错误或错误覆盖?

问题解决了:

* { margin: 0; padding: 0; position: relative; } 

position: relative; 超越了JCrop对绝对定位的需求。 一旦删除,它工作得很漂亮。 我需要它用于其他东西,但我只是在更精确的基础上应用它。

但是我永远找到它,不得不把我的javascript和css都带到他们的一个演示文件中并检查每个部分是否存在冲突。 屁股疼。

如果遇到类似问题,请检查是否存在类似的定位冲突。

这可能发生的另一个原因是如果你忘记包括css。

我在一个项目中遇到了问题,有人在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 = $('
').width('100%').height('100%').css('zIndex', 320),

变成:

 $hdl_holder = $('
').width('100%').height('100%').css({ zIndex: 320, position: 'absolute' }),

第1122行jquery.Jcrop.js:

 $img_holder.append($track); 

变成:

 $hdl_holder.append($track);