質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

6735閲覧

【JQuery】sortableにて縦結合行を含むテーブルの並び替えおよび置換方法

yuya1191994

総合スコア13

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/10/29 07:13

編集2018/10/29 07:41

前提・実現したいこと

JQueryのsortableを使って、テーブル間をドラッグ&ドロップでソートしたいです。

実現したいこととしては、縦結合を含むテーブルで//A行、//B行を同時に動かしたいのですが、Aのみがソートされ上手くいきません。
原因はテーブル間のソートではtr単位で判定して動いているからなのでしょうが、
JQueryの方に何かを追記してABともに動くコードにしたいです。

該当のソースコード

JQuery

1 $(function(){ 2 $('#sample tbody').sortable().disableSelection(); 3 4 5 6 7//html 8 9<table id="sample"> 10 <tbody> 11 <tr> 12 <td rowspan="2">1行目</td> //A 13 <td>1行目2列目</td> 14 <td>1行目3列目</td> 15 <td>1行目4列目</td> 16 </tr> 17 <tr> //B ・・・AB同時にソートさせたいがAのみソートされる 18 <td>1'行目2列目</td> 19 <td>1'行目3列目</td> 20 <td>1'行目4列目</td> 21 </tr> 22 <tr> 23 <td rowspan="2">2行目</td> 24 <td>2行目2列目</td> 25 <td>2行目3列目</td> 26 <td>2行目4列目</td> 27 </tr> 28 <tr> 29 <td>2'行目2列目</td> 30 <td>2'行目3列目</td> 31 <td>2'行目4列目</td> 32 </tr> 33 </tbody> 34</table> 35

試したこと

テーブルの中でdivで括ったりしてみたのですが、当然テーブル内にdivは使えないため、上手くいきませんでした。
ご教授よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2018/10/29 07:15

jQuery UIのことであれば、「jQuery UI」タグをつけてください
yuya1191994

2018/10/29 07:18

追加いたしました。 初質問にて至らない点があり申し訳ございません。
退会済みユーザー

退会済みユーザー

2018/10/29 07:28 編集

tdの中にtrを書くのってだめくないですか?テーブルにしてみては?
yuya1191994

2018/10/29 07:38

すみません、記述ミスです。変更しました。 htmlの記述ミスの類の現象ではありません。
guest

回答1

0

ベストアンサー

rowspanを使ったtableの並び替えは対応していない場合がほとんどです。
jQuery UIのSotableも start, update, stop オプションを書けば対応できるでしょうが大変です。
ここはtbodyを複数使うのはどうでしょうか?
それを考慮して修正してみます。

HTML

1<table id="sample"> 2 <tbody> 3 <tr> 4 <td>1行目1列目</td> <!--//A--> 5 <td rowspan="2">1行目2列目</td> 6 <td>1行目3列目</td> 7 <td>1行目4列目</td> 8 </tr> 9 <tr> <!--//B ・・・AB同時にソートさせたいがAのみソートされる--> 10 <td>1'行目1列目</td> 11 <td>1'行目3列目</td> 12 <td>1'行目4列目</td> 13 </tr> 14 </tbody> 15 <tbody> 16 <tr> 17 <td>2行目1列目</td> 18 <td rowspan="2">2行目2列目</td> 19 <td>2行目3列目</td> 20 <td>2行目4列目</td> 21 </tr> 22 <tr> 23 <td>2'行目1列目</td> 24 <td>2'行目3列目</td> 25 <td>2'行目4列目</td> 26 </tr> 27 </tbody> 28</table>

jQuery

1 $(function(){ 2 $('#sample').sortable({ 3 axis: 'y' 4 }).disableSelection(); 5 });

なお、disableSelection()は非推奨となっています。
https://api.jqueryui.com/disableSelection/

投稿2018/10/29 07:43

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2018/10/29 07:44

すみません、SotableはSortableの誤記です
yuya1191994

2018/10/29 08:07

ご回答ありがとうございます。 tbodyの複数配置はやってみていたのですが、そうしますと各tbodyタグのtr間でしかソートできなくなってしまいます。 非推奨APIのご指摘ありがとうございます。
x_x

2018/10/29 08:09

そうしたいという意図があったと思ったのですが、違うのでしょうか?
yuya1191994

2018/10/29 08:22

齟齬を発生させてしまい申し訳ございません。 ご指摘いただきましたソースでいいますと、 <table id="sample"> <tbody>    <!-- A ここから --> <tr> <td>1行目1列目</td> <td rowspan="2">1行目2列目</td> <td>1行目3列目</td> <td>1行目4列目</td> </tr> <tr> <td>1'行目1列目</td> <td>1'行目3列目</td> <td>1'行目4列目</td> </tr>  </tbody>    <!-- B ここまでを--> <tbody> <tr> <td>2行目1列目</td> <td rowspan="2">2行目2列目</td> <td>2行目3列目</td> <td>2行目4列目</td> </tr> <tr> <td>2'行目1列目</td> <td>2'行目3列目</td> <td>2'行目4列目</td> </tr> </tbody> <!-- C ここにソートさせたい --> </table> という意図での質問でした。 tbodyを複数配置しますと、ABをCの位置へ、ではなくAB間の順番を入れ替えることしかできなくなってしまいます。
x_x

2018/10/29 08:24

わたしはスクリプトも回答していますが、そちらを確認したうえでの話ですか?
yuya1191994

2018/10/29 09:06

スクリプト内のtbodyを除去するのを見落としていました。失礼しました。 お陰様で解決いたしました。ご丁寧な解説ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問