jQuery UI 要素の並び順を変えるサンプル(sortable)

jQuery UIの要素の並び順をドラッグ・アンド・ドロップで変えるサンプルです。
Sortable Widgetを使用します。

目次

Sortable Widget

  • jQuery UIのライブラリです。
  • 要素の並び順をドラッグ・アンド・ドロップで変えることができます。
  • jquery.min.jsに加えてjquery-ui.min.jsを追加します。
  • 以下はjQuery UIのSortable Widgetのリンクです。
    http://api.jqueryui.com/sortable/

要素の並び順を変える

要素の並び順を変えるサンプルです。
テーブルとリストの行をドラッグ・アンド・ドロップで並び順を変えることができます。

テーブル1
テーブル2
テーブル3
テーブル4
  • リスト1
  • リスト2
  • リスト3
  • リスト4

コード

上記サンプルのコードです。

<style>
table{width:100%;border:1px solid #000000;border-collapse: collapse;background-color:lavender;}
td{border:1px solid #000000;}
.ph1{border: dotted 2px blue;}
</style>

<table>
	<tbody id="t1">
	<tr><td>テーブル1</td></tr>
	<tr><td>テーブル2</td></tr>
	<tr><td>テーブル3</td></tr>
	<tr><td>テーブル4</td></tr>
	</tbody>
</table>
<ul id="t2">
	<li>リスト1</li>
	<li>リスト2</li>
	<li>リスト3</li>
	<li>リスト4</li>
</ul>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script>
$(function() {
	// テーブルの行の並び替え
	$('#t1').sortable({
		opacity: 0.5,
		placeholder: "ph1",
	});
	// リストの行の並び替え
	$('#t2').sortable({
		cursor: "move",
		opacity: 0.7,
		placeholder: "ph1",
	});
});
</script>

27行は、テーブルの行の並び替えをしています。
28行目のopacityは、ドラッグ時の透明度です。(0に近いほど透明)
29行目のplaceholderは、ドロップする先の見え方をCSSで指定しています。4行目の.ph1が適用されます。
32行は、リストの行の並び替えをしています。
33行目のcursorはドラッグ時のカーソルの形を指定します。

 

現在の並び順を取得する

ドラッグ・アンド・ドロップすると並び順が表示されます。

  • リスト1
  • リスト2
  • リスト3
  • リスト4

取得した並び順 :

コード

上記サンプルのコードです。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<style>.ph1{border: dotted 2px blue;}</style>

<ul id="t3">
	<li id="1">リスト1</li>
	<li id="2">リスト2</li>
	<li id="3">リスト3</li>
	<li id="4">リスト4</li>
</ul>
<p>取得した並び順 : <span id="t4"></span></p>

<script>
$(function() {
	// テーブルの行の並び替え
	$('#t3').sortable({
		opacity: 0.5,
		placeholder: "ph1",
		update: function(event,ui){
			//現在の並び順を取得
			$('#t4').text($('#t3').sortable("toArray"));
		}
	});
});
</script>

19行目のupdateイベントは、並び順が変更される毎に呼び出されます。
21行目は、sortableメソッドの引数にtoArrayを指定して現在の並び順を取得しています。
6-9行目からのリストのidの値は、並び順の番号として表示されます。

関連の記事

jQuery UI アコーディオンのサンプル(accordion)
jQuery カレンダーから日付を入力する(Datepicker)
jQuery モーダルでダイアログを開くサンプル
jQuery UI タブのサンプル(tabs)
jQuery UI ツールチップのサンプル(tooltip)
jQuery UI オートコンプリートのサンプル(Autocomplete)
jQuery ドラッグ・アンド・ドロップする(draggable)

△上に戻る