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
コメントを残す