0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

テーブルの行をドラッグ&ドロップで並び替えるJqueryプラグインにはまった

Posted at

#テーブルの行をドラッグ&ドロップで並び替えるJqueryプラグイン2選
1つはjqueryULのsorttable、もう一つはtabledndというプラグイン。両方、tableと名はついていますが、tableである必要はなく、要素を並べ替えらるプラグインです。
2つともには、はまってしまいました。

はまった条件は、総ての行にthを使っていたこと(はまったのはtablednd)、tableのクラスをセレクタに使ったこと(こっちはsorttable)です。
#はまった手法

<table class="foo">
  <tr>
    <th>見出し1</th><th>見出し2</th><th>見出し3</th>
  </tr>
  <tr>
    <th>見出しa</th><td></td><td></td>
  </tr>
  <tr>
    <th>見出しb</th><td>></td><td></td>
  </tr>
  </table>
見出し1 見出し2 見出し3
見出しa
見出しb
jqueryとそれぞれのプラグインを読み込み、 sorttableだと [https://jqueryui.com/](https://jqueryui.com/)
$(function() {
    $('.foo').sorttable();
});

tabledndだと
https://github.com/isocra/TableDnD

$(function(){
  $(".foo").tableDnD();
});

で動くはずだったのに、動かない。
#わかったこと
##tablednd

  • jquery1系、jquery2系、jquery3系すべてに使用可
  • thが含まれる行は、初期値では固定となり動かせない

左側のセルをthにする場合、動かなくなることに留意が必要。

##sorttable

  • <table class="foo"><tr>……としていても

    $('.foo').sorttable();ではなく、

    $(".foo tbody").sorttable();とすべし
$(function() {
    $('.foo tbody').sorttable();
});

こっちなら動きます。
tbody!!
そう思ってみると、参考にしたサイトでは、tableではなく、tbodyにクラス名が見本サイトにはついています。普段、tbodyを書かない方、要注意です。
公式サイトではul>liで、liを動かしていました。ソースよりも、dom上の親要素をセレクタにということです。

See the Pen BaNdqbP by kazu-1 (@kazu-1) on CodePen.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?