jQueryのFlyDom pluginを使ってみたら便利だったけどバグに当たった
JSONを取ってきて、そこからJavaScriptで動的にHTMLを組み立てていくような場合、
$('#content').html( $('<table>').attr( { id: 'items' } ).html( $('<tr>').append( $('<th>').html( 'Header' ) ).append( $('<td>').html( 'Data' ) ) ) );
とか書くのが面倒だなーと思った。このへん、MochiKitはいい感じに書けたよね。
何かいい手はないかとremedie.jsを読んでみたら、これが使われてた。
さっきの例だと、
$('#content').empty().createAppend( 'table', { id: 'items' }, [ 'tr', {}, [ 'th', {}, 'Header', 'td', {}, 'Data' ] ] );
てな具合にすっきり書けて楽になった。
と思いきや、こいつにformのレンダリングを任せたらoptionのvalueが出てこない。
どうやらバグらしい。jquery-flydom-3.1.1.jsだと、326行目からのvar special = { 〜 } でいろいろ定義してるところから「'value': 'defaultValue', 」を削除すればいい、とのことなのでやってみたら確かに直った。
Stringのprototypeにメソッド追加してるみたいなので、そのへんが気に入らない人もいるかも知れないけど、わりと便利なのでしばらくこれで書いてみよう。