jQuery UI の Draggable プラグインを使った、ドラッグして移動できるボックスと、jQuery UI の Sortable プラグインを使った、並び替えられるリストとの併用。併用することにより、ドラッグ&ドロップで、新たな項目を、並び替えられるリストへ、追加できる。
実装例(サンプル)
- この項目を追加
- 項目 1
- 項目 2
- 項目 3
- 項目 4
- 項目 5
実装例の動作について
「この項目を追加」と書いてあるリスト項目を、ドラッグして、破線で囲んだリストの「項目 2」の上へ移動すると、「項目 2」が下へ移動し、「項目 1」と「項目 2」の間にスペースができる。そのスペースへドロップすると、破線で囲んだリストへ追加することができる。破線で囲んだリスト項目は、並べ替えることもできる。
実装例のソースコード
読み込み
読み込み方は、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>
<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.draggable.js"></script>
<script type="text/javascript" src="ui/jquery.ui.sortable.js"></script>
<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.draggable.js"></script>
<script type="text/javascript" src="ui/jquery.ui.sortable.js"></script>
JavaScript
<script>
<!--
jQuery( function() {
jQuery( '#jquery-ui-sortable' ) . sortable( {
revert: true
} );
jQuery( '#jquery-ui-draggable' ) . draggable( {
connectToSortable: '#jquery-ui-sortable',
helper: 'clone',
revert: 'invalid',
} );
jQuery( '#jquery-ui-draggable-connectToSortable' ) . disableSelection();
} );
// -->
</script>
<!--
jQuery( function() {
jQuery( '#jquery-ui-sortable' ) . sortable( {
revert: true
} );
jQuery( '#jquery-ui-draggable' ) . draggable( {
connectToSortable: '#jquery-ui-sortable',
helper: 'clone',
revert: 'invalid',
} );
jQuery( '#jquery-ui-draggable-connectToSortable' ) . disableSelection();
} );
// -->
</script>
CSS
<style>
<!--
#jquery-ui-draggable-connectToSortable ul {
list-style-type: none;
margin: 0;
padding: 0 5px;
margin-bottom: 10px;
}
#jquery-ui-draggable-connectToSortable li {
margin: 5px;
padding: 5px;
width: 200px;
}
#jquery-ui-sortable {
width: 222px;
padding: 5px 0;
border: 1px dashed gray;
border-radius: 10px;
}
-->
</style>
<!--
#jquery-ui-draggable-connectToSortable ul {
list-style-type: none;
margin: 0;
padding: 0 5px;
margin-bottom: 10px;
}
#jquery-ui-draggable-connectToSortable li {
margin: 5px;
padding: 5px;
width: 200px;
}
#jquery-ui-sortable {
width: 222px;
padding: 5px 0;
border: 1px dashed gray;
border-radius: 10px;
}
-->
</style>
HTML
<div id="jquery-ui-draggable-connectToSortable">
<ul>
<li id="jquery-ui-draggable" class="ui-state-highlight">この項目を追加</li>
</ul>
<ul id="jquery-ui-sortable">
<li class="ui-state-default">項目 1</li>
<li class="ui-state-default">項目 2</li>
<li class="ui-state-default">項目 3</li>
<li class="ui-state-default">項目 4</li>
<li class="ui-state-default">項目 5</li>
</ul>
</div>
<ul>
<li id="jquery-ui-draggable" class="ui-state-highlight">この項目を追加</li>
</ul>
<ul id="jquery-ui-sortable">
<li class="ui-state-default">項目 1</li>
<li class="ui-state-default">項目 2</li>
<li class="ui-state-default">項目 3</li>
<li class="ui-state-default">項目 4</li>
<li class="ui-state-default">項目 5</li>
</ul>
</div>