jQuery EasyUI ドラッグ&ドロップ -学校の時間割を作成

このチュートリアルでは、jQuery EasyUI を使用して学校の時間割を作成する方法を説明します。 2つのテーブルを作成します。左側には学校の科目を表示し、右側には時間割を表示します。 学校の科目をドラッグして、時間割のセルにドロップできます。 学校の科目は <div class="item"> 要素で、時間割のセルは <td class="drop"> 要素です。

学校の科目を表示

    <div class="left">
        <table>
            <tr>
                <td><div class="item">English</div></td>
            </tr>
            <tr>
                <td><div class="item">Science</div></td>
            </tr>
            <!-- other subjects -->
        </table>
    </div>

時間割を表示

    <div class="right">
        <table>
            <tr>
                <td class="blank"></td>
                <td class="title">Monday</td>
                <td class="title">Tuesday</td>
                <td class="title">Wednesday</td>
                <td class="title">Thursday</td>
                <td class="title">Friday</td>
            </tr>
            <tr>
                <td class="time">08:00</td>
                <td class="drop"></td>
                <td class="drop"></td>
                <td class="drop"></td>
                <td class="drop"></td>
                <td class="drop"></td>
            </tr>
            <!-- other cells -->
        </table>
    </div>

左側の学校の科目をドラッグする

    $('.left .item').draggable({
        revert:true,
        proxy:'clone'
    });

時間割のセルに学校の科目をドロップする

    $('.right td.drop').droppable({
        onDragEnter:function(){
            $(this).addClass('over');
        },
        onDragLeave:function(){
            $(this).removeClass('over');
        },
        onDrop:function(e,source){
            $(this).removeClass('over');
            if ($(source).hasClass('assigned')){
                $(this).append(source);
            } else {
                var c = $(source).clone().addClass('assigned');
                $(this).empty().append(c);
                c.draggable({
                    revert:true
                });
            }
        }
    });

上記のコードでご覧のように、ユーザーが左側の学校の科目をドラッグして時間割のセルにドロップすると、onDrop コールバック関数が呼び出されます。左側からドラッグしたソース要素をクローンし、時間割のセルに追加します。 学校の科目を時間割のあるセルから別のセルにドラッグする場合は、単に移動するだけです。

jQuery EasyUI サンプルをダウンロード

jeasyui-dd-timetable.zip

その他の拡張