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

时间:2010-08-01 06:13:32

标签: javascript jquery jcrop

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

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

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

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

3 个答案:

答案 0 :(得分:14)

问题解决了:

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

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

让我永远找到它,但是,我必须把我的javascript和css带到他们的一个演示文件中,并检查每一件是否有冲突。屁股疼。

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

答案 1 :(得分:14)

这可能发生的另一个原因是你忘了包含css。

答案 2 :(得分:0)

我在一个项目中遇到了问题,有人在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);