2013-01-22 55 views
0

有谁知道,我有一个可拖拽的项目,应该捕捉到可拖拽项目。我有这个工作,但我似乎无法弄清楚的是,我希望可拖动的对象,一旦放到可拖放的对象上,自己对齐,以便它只是在左侧。像下面的图片一样。jQuery可拖拽,向左偏移

有没有人知道用jQuerys拖动/放置物体的方法吗?

UPDATE

下面是当对象被放下的功能我有。

function handleCardDrop(event, ui) { 
    var slotNumber = $(this).data('number'); 
    var cardNumber = ui.draggable.data('number'); 

    // If the card was dropped to the correct slot, 
    // change the card colour, position it directly 
    // on top of the slot, and prevent it being dragged 
    // again 
    //alert("Slot number: "+slotNumber+"\n Card Number: "+cardNumber); 

    //alert(cardNumber+":"+slotNumber); 
    if(cardNumber==slotNumber) 
    { 
     correctCards++; 
    } 

    ui.draggable.addClass('correct'); 
    ui.draggable.draggable('disable'); 

    ui.draggable.addClass('correct'); 
    ui.draggable.draggable('disable'); 
    $(this).droppable('disable'); 

    ui.draggable.css({'cursor':'default'}); 
    ui.draggable.position({ of: $(this), my: 'left top', at: 'left top' }); 
    ui.draggable.draggable('option', 'revert', false); 
} 

enter image description here

+0

你怎么捕捉?听起来像你的答案是在造型。 – crowjonah

+0

我已经更新了我的答案,以包含在放弃它时触发的事件/函数。 – user1470118

回答

2

我想出了一个办法来实现这一目标。当我真正需要的是offset()函数时,我使用了position()函数。这是我用于定位的代码片段。可拖动的对象的高度稍小一点,因此对于顶部,我计算不同的大小,然后将它除以2以将其居中在对象内。然后,我将它设置为可丢弃对象的可拖动对象的一半。

var off = $(this).offset(); 
    off.top += (($(this).height() - ui.draggable.height())/2); 
    off.left -= ui.draggable.width()/2; 

    ui.draggable.offset(off);