Zen Coding Plugin for jQuery
jQuery Zen Coding Plugin を作ってみました。Zen Coding の書式から jQuery オブジェクトを作る感じのやつです。
とりあえずソースとかは http://sakuratan.biz/jquery/zencoding/ に置いてます。オリジナルの Zen Coding と同じで MIT ライセンスです。
使い方
var obj = $.zenCoding('div#page>div.logo+ul#navigation>li*5>a');
で、Zen Coding を展開した jQuery オブジェクトを返します。上の例ですと、
<div id="page"> <div class="logo"></div> <ul id="navigation"> <li><a></a></li> <li><a></a></li> <li><a></a></li> <li><a></a></li> <li><a></a></li> </ul> </div>
の構造を持った jQuery オブジェクトが返ってきます。jQuery オブジェクトってのは $(‘#id’) とか呼び出した時に返ってくるやつのことす。$.zenCoding の戻り値を他の jQuery オブジェクトにそのまま引っ付けることができるって意味す。
var obj = $.zenCoding('div#page>div.logo+ul#navigation>li*5>a'); $('#replace').append(obj);
$('#replace').zenCoding('div#page>div.logo+ul#navigation>li*5>a');
$.fn.zenCoding は Zen Coding を展開したオブジェクトを append します。中身無い状態で append してもあんまりうれしくないと思いますので、こっちはあんまり使い道無いと思います。
alert($.zenCoding('div#page>div.logo+ul#navigation>li*5>a', { resultType: 'text' }));
他にもオプションありますが、たぶんあんまり使い道無いと思います。詳しくは http://sakuratan.biz/jquery/zencoding/ をどうぞ。
ほかの例
もう少しややこしい感じのですと、ツイッターのタイムラインに埋め込むツイート部分を Zen Coding で書くとこんな感じになります。面倒くさくなってきたので ul の中身省略してます、サーセンw
$.zenCoding('li.status>(span.thumb.vcard.author>a.tweet-url>img)+(span.status-body>(span.status-content>(strong+span.entry-content))+span.meta.entry-meta>(a.entry-data+span))+ul.actions-hover+ul.meta-data.clearfix');
で、できあがるのはこんな感じの HTML。
<li class="status"> <span class="thumb vcard author"> <a class="tweet-url"><img src="" alt=""></a> </span> <span class="status-body"> <span class="status-content"> <strong></strong> <span class="entry-content"></span> </span> <span class="meta entry-meta"> <a class="entry-data"></a> <span></span> </span> </span> <ul class="actions-hover"></ul> <ul class="meta-data clearfix"></ul> </li>
元の Zen Coding が長ったらしいんでかえってややこしい気がしますwww
という感じですので、もうちょい小分けに使った方がよろしいんでは無いでしょうか。
jikviMdccZUVlFpSlA 6032
Check that off the list of things I was coensufd about.