トップ «前の日記(2008-11-11) 最新 次の日記(2008-11-16)» 編集

2008-11-14 [長年日記]

_ jQuery 2題

CSS の #ID.CLASS 相当

なんか

#ID.CLASS

の書き方は jQuery 1.2.6 で動かないっぽい。

[id=ID][class=CLASS]

だと取得できた。

jQuery.wrap() は ownerDocument が必要

言い換えると wrap したい要素がブラウザの DOM ツリー上に存在していないとダメ。

なんでこんなことしようと思ったかというと、HTML を組み立てて HTML 上に追加したかったんだけど、追加する HTML をベタ書きじゃなくてある程度動的に変更できたらいいなと思ったわけです。で、

jQuery( html1 ).wrap( html2 );

だとこの時点で html1 が DOM ツリー上に存在しないので動かない。結果は wrap される前のものが返ってくる。

var obj = jQuery( html1 );
$( selector ).append( obj );
obj.wrap( html2 );

こうすると動く。これだと 2行目の append()*1の時点で DOM ツリー上に置かれるので、それ以降の obj に対して wrap() が有効に働く。

なるほどねぇ。

※ そういえば Firebug の console.log() 初めて使ったよ。なんで今まで使ってなかったんだ。0.4 の頃からあったらしい。なんと情けない。

Tags: Ecmascript

*1 append 以外でもなんでもいい