jQueryのfilterを拡張する方法
Posted: Updated:
filterに任意のメソッドを拡張する方法
Quick Tip: Dissecting jQuery – Filters を参考に、jQueryのfilterを拡張します。簡単です。
拡張コード
// 書き方1
jQuery.expr.filters.isFloatUnit = function( elem ) {
return elem.className.match(/(image|map|youtube|eximage)-(left|right)/);
}
// 書き方2
$.extend(
jQuery.expr[':'], {
isFloatUnit: function( elem ) {
return elem.className.match(/(image|map|youtube|eximage)-(left|right)/);
}
}
);
どちらの書き方でも拡張できます。上のサンプルは、単に要素のクラスが正規表現マッチするかどうかだけのメソッド。製品内のローカルな規則に基づいたfilterを実装できると、ちょっと便利な場面もあったりなかったり。
利用コード
// 使い方1
$(elem).children().filter(':isFloatUnit');
// 使い方2
$('div:isFloatUnit');
: ( jQuery.expr[':'] ) は、filter ( jQuery.expr.filters ) のエイリアス扱い。実装したら、あとは勝手の良い方法でフィルターを利用します。