メソッドチェーンを途切ることなく HTML タグを組み立てる jQuery Tag プラグイン
jQuery Tag プラグインは jQuery のメソッドチェーンを途切ることなく、HTML タグを組み立てるためのプラグインです。HTML タグの生成と追加をスタックで操作することで、メソッドチェーンを崩さずに HTML タグを組み立て続けることができます。
スタックの操作は jQuery 自体が持つスタックの仕組みを利用しています。jQuery は pushStack メソッドで現在のインスタンスをスタックに積み、end メソッドで直前のインスタンスに戻すことができます。
この特性を利用して、tag メソッドで HTML タグを生成して pushStack メソッドでスタックに積みます。gat メソッドで end メソッドでスタックから戻し、HTML タグを追加します。gat メソッドの名前は tag メソッドを逆に読んだものです。戻すや反対という意味を込めています。
また $.tag メソッドを使うと、スタックに積まずに HTML タグを生成できます。起点となる HTML タグを生成して組み立てるときに使えます。
ダウンロード
jquery.tag.js (Uncompressed only)
(function($) {
// $.tag
$.tag = function(name) {
return jQuery('<' + name + ' />');
};
// tag
$.fn.tag = function(name) {
var self = this;
return self.pushStack($.tag(name));
};
// gat
$.fn.gat = function() {
var self = this;
return self.end().append(self);
};
})(jQuery); // function($)
デモ
以下は div タグに a タグを追加する例です。tag メソッドで a タグを生成し、gat メソッドでその a タグを div タグに追加しています。
<div id="r1"></div>
<script type="text/javascript">
//<![CDATA[
jQuery(function($) {
$('#r1')
.tag('a')
.attr('href', '/postal/')
.text('Postal Search APIs & Solutions')
.gat();
});
//]]>
</script>
以下は div タグに ul と li のリストタグ、さらに a タグを追加する例です。ul と li タグがスタックに積まれ、最終的に div タグまでさかのぼって追加されることになります。
<div id="r2"></div>
<script type="text/javascript">
//<![CDATA[
jQuery(function($) {
$('#r2')
.tag('ul')
.tag('li')
.tag('a')
.attr('href', '/postal/digest.html')
.text('Postal Search Ajax API ダイジェスト')
.gat()
.gat()
.tag('li')
.tag('a')
.attr('href', '/postal/reference.html')
.text('Postal Search Ajax API リファレンス')
.gat()
.gat()
.gat()
//]]>
</script>
jQuery Tag プラグインは jQuery の振る舞いを理解する目的で作成したものですが、特定の場面でニーズがあるかもしれませんので公開します。ライセンスは jQuery と同じにしておきます。
関連情報
- fixedUI プラグイン
- jTemplates
- Cycle Plugin
- Flash Plugin
- tablesorter
- Interface Elements
-
- Interface Elements の Carousel とフォートラベル API で旅行写真の 3D ギャラリーを作る
- Interface Elements の Imagebox とフォートラベル API で旅行写真のギャラリーを作る
- Interface Elements の Slider で郵便番号を入力してみたが・・・
- Interface Elements の Slider で旅行写真を拡大(または縮小)表示する
- Interface Elements の Tooltips をいろいろな要素で使ってみた
- Interface Elements の Scrollto でページ内リンクをスムースにする
- Interface Elements の Carousel と YouTube Data API で動画のサムネイルを回転表示する
- Selectors
- Events
- DOM Manipulation
- AJAX
- Forms with Functions
- Using with Other Libraries
- Books
-
- Resources
