2013-10-21 175 views
3

我有一個jQuery對象的數組,這些對象是draggable
我想要的是當數組中的任何元素被拖動時,所有其他元素也應該被拖動。使用JQueryUi可拖動的選定HTML DIV元素可拖動

以下是我已經嘗試樣本代碼,但我沒有得到任何成功

$(event.target).parents('.ui-class-name').draggable({ 
    disabled : false, 
    helper: function() { 
    var allSelectedEle = $($selected).map(function() { 
     return this.toArray() 
    }); 
    return allSelectedEle; 
} 
}); 

這裏$selectedjQuery對象

更新的數組:這裏是sample標記

回答

4

您需要保存元素的初始座標,並在拖動時更新它們(demo):

var els = $('.eq-ui-widget') 
var coords = { x: 0, y: 0 } 

function getSelected() { 
    return els.filter('.selected') 
} 

els 
.draggable({ 
    disbled: true, 
    drag: function(e, ui) { 
     getSelected().each(function() { 
      var orig = $(this).data().orig 
      $(this).css({ 
       top: orig.top + (ui.position.top - coords.y) , 
       left: orig.left + (ui.position.left - coords.x) 
      }) 
     }); 
    }, 
    start: function(e, ui) { 
     coords.x = ui.position.left; 
     coords.y = ui.position.top; 

     getSelected().each(function() { 
      $(this).data().orig = $(this).position(); 
     }); 
    } 
}) 
.on('click', function(event) { 
    if(!event.ctrlKey) return; 
    $(event.target).toggleClass('selected'); 
    /*logic for dragging all selected elements simultaneously*/ 

    var selected = getSelected() 
    els.draggable('option', 'disabled', true) 
    selected.draggable('option', 'disabled', false) 
}); 
+0

我需要拖動選定的元素,並將它們放到新的地方而不是它們的克隆 – bitsbuffer

+0

那麼爲什麼不抓住它們呢? http://jsfiddle.net/FC4Nx/3/ – krasu

+0

我的可拖動區域和可拖放容器是相同的。我只是想將所有元素移動到新的位置,但一次。 – bitsbuffer