木構造をもったテーブルjQuery-TreeGridを使ってみた。
こういうUIが欲しかった。しかし非常に複雑なHTMLコードになってしまう。
成果物
JS.jquery.treegrid.201705151150
前回まで
背景
テーブルだけど木構造をもっていて開閉できるUIが欲しい。以下Python学習項目の目次をそれで表示したい。
Python Documentation contents — Python 3.6.1 ドキュメント
参考
- Treegrid jquery plugin
- Tree Grid コントロール - jQuery Tree Grid コンポーネント - Ignite UI™
- Trirand jqTreeGrid - jQuery based tree grid HTML5 component for Javascript
cdn。
- jquery-treegrid - cdnjs.com - The best FOSS CDN for web related libraries to speed up your websites!
結果
期待通り。開閉できるテーブルになった。
しかし、ソースコードの汚さとID管理の煩雑さが尋常じゃない。少なくとも手で書くのは現実的でない。
気になる点
- HTML表示するとき最初に1行目だけ表示されてしばらくすると全部表示される
- ソースコードが汚くなる
<script>
の読込はHTML要素で木構造を定義した後<body>
の最後尾に<script>
を書く
<table>
のネスト- idの生成と管理が面倒すぎる
<tr class="treegrid-4 treegrid-parent-1" id="node-1-1-2">
- 重複しない
id
を生成せねばならない- テキストノードとは別に。
class
で親子関係を管理するためのIDを生成せねばならない{treegrid-{自分のID}}
treegrid-parent-{親のID}
- しかもこれらは
id="..."
とは別物
- 重複しない
<table>
をネストしていたかと思えば、親子関係をclass属性で設定していたりする。無駄に煩雑。
所感
HTMLソースコードは目もあてられないことに。どうしたものか。