8

以下の機能が必要です

  1. jquery uiのselectablesと同様に、マウスのドラッグとctrlキーでリストからアイテムを選択します。
  2. 一度に複数のアイテムをドラッグできる必要があります。

オペレーティング システムのドラッグ アンド ドロップ機能に似たアプリケーションが必要です。

私の問題は、マウスポインターアイテムがドラッグしている複数のアイテムを選択したい場合、それを解決する方法です。

コードを使用しようとしましたが、複数のアイテムを選択する際にいくつかの欠陥があります。

$(document).ready(function(){

    var selectedClass = 'ui-state-highlight',
        clickDelay = 600,     // click time (milliseconds)
        lastClick, diffClick; // timestamps

    $("#draggable li")
        // Script to deferentiate a click from a mousedown for drag event
        .bind('mousedown mouseup', function(e){
            if (e.type=="mousedown") {
                lastClick = e.timeStamp; // get mousedown time
            } else {
                diffClick = e.timeStamp - lastClick;
                if ( diffClick < clickDelay ) {
                    // add selected class to group draggable objects
                    $(this).toggleClass(selectedClass);
                }
            }
        })
        .draggable({
            revertDuration: 10, // grouped items animate separately, so leave this number low
            containment: '.demo',
            start: function(e, ui) {
                ui.helper.addClass(selectedClass);
            },
            stop: function(e, ui) {
                // reset group positions
                $('.' + selectedClass).css({ top:0, left:0 });
            },
            drag: function(e, ui) {
                // set selected group position to main dragged object
                // this works because the position is relative to the starting position
                $('.' + selectedClass).css({
                    top : ui.position.top,
                    left: ui.position.left
                });
            }
        });

    $("#droppable, #draggable")
        .sortable()
        .droppable({
            drop: function(e, ui) {
                $('.' + selectedClass)
                 .appendTo($(this))
                 .add(ui.draggable) // ui.draggable is appended by the script, so add it after
                 .removeClass(selectedClass)
                 .css({ top:0, left:0 });
            }
        });

});
4

2 に答える 2

2

これが複数選択ドラッグのデモです

デモ

選択可能なプラグインを使用して、複数のアイテムを選択するだけです

$(".itemlist").selectable({filter:"li"});
于 2012-12-19T07:55:00.127 に答える
0

次の例に示すように、選択可能なグリッドのサンプル コードを使用して、ドラッグ可能と並べ替え可能な機能を追加します: http://jqueryui.com/demos/draggable/#sortable

于 2012-07-02T13:36:08.450 に答える