作成日:2019-07-06, 更新日:2023-01-11
基本
・jquery UIが必要
・詳細:jQuery Sortable(公式)
・各パラメータのまとめ:Sortable - jQuery UI API 1.8.4 日本語リファレンス - StackTrace
直の子に「クラス:ui-state-default」を指定して、親要素で実行
▼サンプル
<table border="1" style="width:100%"> <tbody id="tbl_sortable"> <tr class="ui-state-default"><th>1</th><td>a</td><td>jo</td></tr> <tr class="ui-state-default"><th>2</th><td>a</td><td>jo</td></tr> <tr class="ui-state-default"><th>3</th><td>a</td><td>jo</td></tr> <tr class="ui-state-default"><th>4</th><td>a</td><td>jo</td></tr> </tbody> </table> <script> $("#tbl_sortable").sortable(); </script> <div id="sortableArea"> <div class="ui-state-default">1</div> <div class="ui-state-default">2</div> <div class="ui-state-default">3</div> <div class="ui-state-default">4</div> <div class="ui-state-default">5</div> </div> <script> $("#sortableArea").sortable(); </script>
並び順を取得して何かしたい
・「sortable('serialize')」で「id」の値を取得してくれる
・IDの値に「"-"(ハイフン)、"="(等号)、"_"(アンダースコア)」があるかどうかを判別・分割
<table id="hoge_target"> <tr id="foo_1"><td></td></tr> <tr id="foo_2"><td></td></tr> <tr id="foo_3"><td></td></tr> </table> <script> jQuery('#hoge_target').sortable({ axis:'y', stop: function(event,ui){ var url_api = '〇〇.php?'+$(this).sortable('serialize'); // 「〇〇.php?foo[]=1&foo[]=2&foo[]=3」みたいな感じになる // これをDBに保存させるAPIに投げたりする } }); </script>
id以外を使いたいとき
・「sortable()」の第2引数にattributeで指定
~省略~ <tr id="foo_1" name="var_1"><td></td></tr> ~省略~ <script> ~省略~ // nameを取得 var _name = $(this).sortable('serialize', {attribute:'name'}); // 「var[]=1&var[]=2&var[]=3」みたいな感じになる // idとnameの両方を取得 var _all = ''; _all += $(this).sortable('serialize'); _all += '&'; _all += $(this).sortable('serialize', {attribute:'name'}); // 「foo[]=1&foo[]=2&foo[]=3&var[]=1&var[]=2&var[]=3」みたいな感じになる ~省略~