使用JQueryUi draggable可选择的HTML DIV元素

时间:2013-10-21 10:57:14

标签: javascript jquery html css jquery-ui

我有一组jQuerydraggable个对象 我想要的是当拖动数组中存在的任何元素时,也应该拖动所有其他元素。

以下是我尝试的示例代码,但我没有取得任何成功

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

此处$selectedjQuery对象

的数组

更新:以下是sample标记

1 个答案:

答案 0 :(得分: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 )
});