ドラッグ&ドロップで並べ替えるときのドラッグできる部分を指定

jQuery UI の Sortable プラグインの handle オプションを使うと、ドラッグ&ドロップで並べ替えるときの、ドラッグできる部分を指定できる。
項目のボックスを並べ替えたいが、ドラッグできるのはボックス内の一部だけにしたい…そんなときに、役立つオプションだ。

実装例(サンプル)

  • 項目 1
  • 項目 2
  • 項目 3
  • 項目 4
  • 項目 5
  • 項目 6
  • 項目 7

実装例の動作について

「項目 1」のボックス内の右端にある ui-icon-arrowthick-2-n-s.png にカーソルを合わせると、カーソルの形状が移動用カーソル形状になる。「項目 1」の ui-icon-arrowthick-2-n-s.png を、ドラッグして、下へ動かし、「項目 2」の上に持ってくると、「項目 2」が上へ移動し、「項目 2」と「項目 3」の間にスペースができる。そのスペースへドロップすると、「項目 1」と「項目 2」が入れ替わり、「項目 2」「項目 1」「項目 3」…の順番になる。
同様に、「項目 1」から「項目 7」の項目全て、ドラッグ&ドロップによる並べ替えが行える。ただし、ドラッグできるのは、各項目のボックス内の右端にある ui-icon-arrowthick-2-n-s.png だけ。

実装例のソースコード

読み込み

読み込み方は、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( {
        handle: 'span',
    } );
} );
// -->
</script>

CSS

<style>
<!--
#jquery-ui-sortable {
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 350px;
}
#jquery-ui-sortable li {
    margin: 0 3px 3px 3px;
    padding: 0.3em;
    padding-left: 1em;
    font-size: 15px;
    font-weight: bold;
}
#jquery-ui-sortable li span {
    cursor: move;
    position: absolute;
    margin-top: 2px;
    margin-left: 300px;
}
-->
</style>

HTML

<ul id="jquery-ui-sortable">
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s ui-corner-all ui-state-hover"></span>項目 1</li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s ui-corner-all ui-state-hover"></span>項目 2</li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s ui-corner-all ui-state-hover"></span>項目 3</li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s ui-corner-all ui-state-hover"></span>項目 4</li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s ui-corner-all ui-state-hover"></span>項目 5</li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s ui-corner-all ui-state-hover"></span>項目 6</li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s ui-corner-all ui-state-hover"></span>項目 7</li>
</ul>

スポンサード リンク

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