当悬停时前一个元素变高时,可拖动元素中的错误位置

时间:2013-04-26 08:21:51

标签: jquery jquery-ui css-transitions jquery-ui-draggable jquery-ui-droppable

我遇到这种情况:我有可拖放到特殊地方的拖车。我准备了一个小提琴我所描述的功能:http://jsfiddle.net/8MGmb/

$('.widget').draggable({
    handle: '.bar',
    helper: 'clone',
    cursorAt: { top: 0 },
    refreshPositions: true,

    start: function () {
        $(this).css('visibility', 'hidden')
        $('body').addClass('dragging');
    },
    stop: function () {
        $(this).css('visibility', 'visible')
        $('body').removeClass('dragging');
    },
    revert: 'invalid',
    zIndex: 100,
});

如果你悬停.widget div,你会看到.bar元素将是可见的。这种元素是开始拖动整个小部件的“处理程序”。一开始,你会注意到.places现在是灰色背景可见的。和.widget div,你拖动的元素,可以在这种地方内滴管。因此当.widget悬停在.place 时会变得更高(带有很酷的CSS3过渡)。

然后我们遇到了问题...如果你拖动更多的内部.widgets(在另一个.widgets .container中)会注意到如果你将它移动到上面并将鼠标悬停在.place(它已经启动) !)它会向下移动到与悬停的新高度相同的距离。

最初我有一个没有帮助器的配置:http://jsfiddle.net/fRdks/1/目的是解决问题的一部分,但它没有用更多的内部.widgets(第一个链接!)解决它。

$('.widget').draggable({
    handle: '.bar',
    cursorAt: { top: 0 },
    refreshPositions: true,
    start: function () {
        $('body').addClass('dragging');
    },
    stop: function () {
        $('body').removeClass('dragging');
    },
    revert: 'invalid',
    zIndex: 100,
});

我想我不能因为CSS而把帮助器放在体内...但我需要解决这个问题。 你认为这是jquery中正确定位的错误吗?

非常感谢。

PD:我直接从github 导入最新的CDN jquery.ui和draggable and droppable js文件,而不是使用小提琴默认文件,目的是解决已知的滚动错误(已经是固定在主分支中。)

0 个答案:

没有答案