2

我有一个可拖放的任务列表。它们都有一个“over”事件处理程序,以确保当另一个任务悬停在它们上方时它们会亮起。

这并没有像我想要的那样完全有效。当我开始拖动一个任务时,其他任务没有按预期亮起,除非鼠标实际上不在可拖动助手上方(这是可能的,因为我指定了axis ='y',以便我可以移动光标在不中断拖动会话的情况下,帮助器的左侧和右侧)。

我认为问题可能是我正在拖动的任务也是可放置的,所以我指定一旦它被拖动,它的可放置性必须被禁用。

那么为什么在可放置目标上放置可拖动助手不会触发 over 事件,而将光标放在可放置目标上会触发该事件呢?

这是代码:

$(mySubtasks).each(function(){
                    var _this = this;
                    $(_this).draggable({
                        axis: 'y',
                        containment: '#plannerTab',
                        disabled: true,
                        revert: 'invalid',
                        start: function(e, ui){
                            currentlyDragging = true;
                            $(_this).droppable('disable');
                            $('#messageArea').text('Currently dragging');
                            $(_this).css('position', 'absolute');
                        },
                        stop: function(e, ui){
                            currentlyDragging = false;
                            returnToSortableTasklist();
                            $(_this).css('position', 'relative');
                        }
                    });
                    $(_this).droppable({
                        accept: '.subtask',
                        disabled: true,
                        drop: function(e, ui){
                            setTimeout('currentlyDragging = false;', 1000);
                            alert('Dropped something legal on a subtask');
                            //Deactivate all draggable/droppable and reinstate sortable
                            returnToSortableTasklist();
                        },
                        over: function(e, ui){
                            $(this).addClass('dragdropTargetHover');
                            $(ui.helper).addClass('dragdropHelperHover');
                        },
                        out: function (e, ui){
                            $(this).removeClass('dragdropTargetHover');
                            $(ui.helper).removeClass('dragdropHelperHover');
                        }
                    });
4

2 回答 2

1

还有其他一些东西也在干扰:当被拖动时,助手的身体相当小。我确保在可拖动开始时将它们设置为合适的大小,以便它们很容易被我拖动它们的可放置对象“检测到”。

于 2010-07-17T09:32:23.293 回答
1

我发现我的“drop”甚至总是被触发,即使我的“over”事件没有——特别是当我将我的对象拖到另一个靠近被拖动对象的对象时。使用助手大小​​的建议对我不起作用,但让我尝试了其他属性。我惊讶地发现,当我增加 scrollSensibility 时,我的问题就消失了。也就是说,因为我的可拖动区域非常大(水平方向),所以我设置了 scroll:true 和 scrollSensitivity:160。当我将 scrollSensitivity 增加到 400 时,我的问题就消失了。

于 2012-02-03T00:01:01.380 回答