ドラッグ&ドロップで並べ替える対象となる要素を指定

jQuery UI の Sortable プラグインの items オプションを使うと、ドラッグ&ドロップで並べ替える対象となる要素を指定できる。
デフォルトでは、リストタグの li 要素が、並べ替える対象だが、items オプションを使うことで、任意の要素に変更できる。要素名でも指定できるが、クラス名で指定すると、タグを入れ子にしても大丈夫なので、私ならクラス名で指定する。

実装例(サンプル)

  • 項目 1
    • 項目 1-1
    • 項目 1-2
    • 項目 1-3
  • 項目 2
    • 項目 2-1
    • 項目 2-2
    • 項目 2-3
  • 項目 3
    • 項目 3-1
    • 項目 3-2
    • 項目 3-3

実装例の動作について

「項目 1」にカーソルを合わせると、カーソルの形状が移動用カーソル形状になる。「項目 1」をドラッグし、「項目 2」のボックスの上に持ってくると、「項目 2」のボックスが上へ移動し、「項目 2」のボックスと「項目 3」のボックスの間にスペースができる。そのスペースへドロップすると、「項目 1」のボックスと「項目 2」のボックスが入れ替わり、「項目 2」「項目 1」「項目 3」のボックスの順番になる。

実装例のソースコード

読み込み

読み込み方は、2種類ある。パスは、それぞれ、アップロードした場所を指定する。

まとめて読み込む場合
<link rel="stylesheet" href="themes/base/jquery.ui.all.css">
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery-ui-1.8.12.custom.min.js"></script>
個別に読み込む場合
<link rel="stylesheet" href="themes/base/jquery.ui.all.css">
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="ui/jquery.ui.mouse.js"></script>
<script type="text/javascript" src="ui/jquery.ui.sortable.js"></script>

JavaScript

<script>
<!--
$( function() {
    $( '#jquery-ui-sortable' ) . sortable( {
        items: '.jquery-ui-sortable-item',
        handle: 'div',
    } );
} );
// -->
</script>

CSS

<style>
<!--
ul.jquery-ui-sortable {
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 70%;
}
li.jquery-ui-sortable-item {
    margin: 5px;
    padding: 0.5em;
    border: 1px darkgray solid;
    border-radius: 5px;
    background-color: #fcfcfc;
}
li.jquery-ui-sortable-item div {
    padding: 0 0 0 1em;
    font-size: 15px;
    font-weight: bold;
    cursor: move;
    border-radius: 5px;
}
li.jquery-ui-sortable-item ul {
    font-size: 13px;
}
-->
</style>

HTML

<ul class="jquery-ui-sortable">
    <li class="jquery-ui-sortable-item"><div class="ui-state-default">項目 1</div>
        <ul>
            <li>項目 1-1</li>
            <li>項目 1-2</li>
            <li>項目 1-3</li>
        </ul>
    </li>
    <li class="jquery-ui-sortable-item"><div class="ui-state-default">項目 2</div>
        <ul>
            <li>項目 2-1</li>
            <li>項目 2-2</li>
            <li>項目 2-3</li>
        </ul>
    </li>
    <li class="jquery-ui-sortable-item"><div class="ui-state-default">項目 3</div>
        <ul>
            <li>項目 3-1</li>
            <li>項目 3-2</li>
            <li>項目 3-3</li>
        </ul>
    </li>
</ul>

スポンサード リンク

カテゴリー: GUI, JavaScript, jQuery, jQuery UI, Sortable パーマリンク