1

这可能吗:创建一个可拖动元素,以便当它被拖动到特定的可放置元素上时,可拖动元素的包含选项设置为可放置元素?这会产生一种效果,在可放置元素上拖动某些东西会导致可拖动元素被锁定/卡在可放置元素的范围内。

以下是我的代码的摘录,尽管它无法实现上述效果。

var droppable_position = $('#droppable').position();
$('#draggable').draggable({
    helper: 'clone',
    drag: function (event, ui) {
        if (ui.position.left > droppable_position.left && ui.position.top > droppable_position.top)
        {
            $('#draggable').draggable('option', 'containment', '#droppable');
        }
    }
});
4

1 回答 1

2

您可以覆盖被拖动元素的位置。

这里不是“准备就绪”的代码,而是允许自己开发的代码。这个想法是在可放置元素的情况下设置包含位置变量,并在拖动元素hover的情况下使用当前拖动位置测试它们drag

这个小提琴是位置覆盖的一个例子:http: //jsfiddle.net/QvRjL/74/

这个小提琴是一个例子,你可以如何检查拖动的元素是否靠近容器的边框:http: //jsfiddle.net/pPn3v/22/

位置覆盖示例:

$(document).mousemove(function(e){
   window.mouseXPos = e.pageX;
   window.mouseYPos = e.pageY;
}); 

$('[id^="drag-"]').each(function() {
    $(this).draggable({
        opacity: 0.7,
        cursorAt: { top: 15, left: 50 },        
        scroll: true,
        stop: function(){},  
        drag : function(e,ui){            
            //Force the helper position
            ui.position.left = window.mouseXPos - $(this).draggable('option','cursorAt').left;
            ui.position.top = window.mouseYPos- $(this).draggable('option','cursorAt').top; 
        });
});
于 2012-10-27T22:31:52.993 回答