[jQuery] jQueryのプロパティ「$.expr」を使用して、独自のセレクタを実装する

jQueryでは、:first、:lastや:animatedなどのセレクタでDOMのノードを指定することが出来ます。
では、jQueryに標準で用意されていないセレクタが欲しくなった場合はどうすればよいでしょうか?


このような場合は、$.expr[‘:’]に対して、関数を定義することでセレクタを追加することが可能です。
下記の例では、幅が100pxを超える要素のみを抽出するセレクタ”over100pixels”を定義しています。

<script>
$.extend($.expr[':'], {
    over100pixels: function (e)
    {
        return $(e).width() > 100;
    }
});
</script>




実際にこのセレクタを利用する場合は、自作したセレクタである事を意識せずに指定することが可能です。

<script>
$(".box:over100pixels").click(function () {
    alert("幅100px以上のBOXです。");
});
</script>
<div class="box" style="width:80px" />width:80px</div>
<div class="box" style="width:90px" />width:90px</div>
<div class="box" style="width:100px" />width:100px</div>
<div class="box" style="width:110px" />width:110px</div>
<div class="box" style="width:120px" />width:120px</div>
<div class="box" style="width:130px" />width:130px</div>



テスト

下3つの要素をクリックしたときのみメッセージが表示されます。

width:80px
width:90px
width:100px
width:110px
width:120px
width:130px



この記事は、以下のページを参考に作成しています。
jQuery Tips and Tricks

関連記事

コメントを残す

メールアドレスが公開されることはありません。