おれせか

なんかそれっぽいのをうにうに。

jQuery1.3.2から「:visible」と「:hidden」セレクタの仕様が変わって、cssでvisibility:hiddenしただけの要素は「:visible」として扱われるようになった。

jQuery1.3.1以前
要素のCSSを見て、"display"が"none"ではなく、"visibility"が"hidden"ではなく、input要素であればtype属性が"hidden"でないこと

jQuery1.3.2以降
ブラウザがoffsetWidthおよびoffsetHeightにゼロより大きい値を返すこと

この変更により、対象要素のdisplayが"none"の場合はもちろん、親要素のdisplayが"none"であったり、要素のwidthやheightがゼロであった場合なども、":hidden"として検出されるようになりました。

http://semooh.jp/jquery/cont/doc/release_1.3.2/

でもこの仕様だと「visibility:hiddenだって見えないのにhiddenじゃねーのかよ」という違和感があるので、visibility:hidden時にはhidden判定される用のセレクタを用意してみた。
#既存の「:visible」「:hidden」は、それはそれで使う場合もあるだろうから書き換えではなく追加。

参考:JavaScript++かも日記: 【jQuery】自作セレクタの追加

$.extend($.expr[':'], {
      _visible: function(elem){
        if($.expr[':'].hidden(elem)) return false;
        if($.curCSS(elem, 'visibility') == 'hidden') return false;
        return true;
    }
    , _hidden: function(elem){
        if($.expr[':'].hidden(elem)) return true;
        if($.curCSS(elem, 'visibility') == 'hidden') return true;
        return false;
    }
});

これで以下のようなコードで使えるように。

$('p:_visible') //表示されているpタグ。
$('p:_hidden') //表示されていないpタグ。
PAGETOP
PAGETOP
PAGETOP

Comments (9)

それは多くの情報が含まれているように私は、私にとって非常に有用なこの記事を見つけることが嬉しいです。

[2013/05/21 (火) 12:30]

not to say that employers aren’t looking for them; they are. But the numbers show that old-guard certifications are still the ones employers l

[2015/08/13 (木) 16:35]

macだとコピーとペーストのコマンドがそれぞれ『pbcopy』と『pbpaste』なので、
変換したい文字列をコピーして、

[2015/09/16 (水) 13:06]

l直書きでネスト作るこ

[2015/10/13 (火) 17:13]

画像の一部を任意のサイズに切り抜くjQueryプラグイン作ったー。
ひとまず、IE6~、Firefox、Google Chromeでは動作確認できました

[2016/01/06 (水) 18:10]

フラグとほぼ同じですが, 各ループの最後に変数 $_ の値を出力するようになります。

[2016/01/07 (木) 11:00]

宝のスーパーコピーめでたい(ミュウミュウ)。

[2016/01/15 (金) 17:44]

jQuery1.3.2から「:visible」と「:hidden」セレクタの仕様が変わって、cssでvisibility:hiddenしただけの要素は「:visible」として扱われるようになった。

[2016/06/20 (月) 12:20]

宝のスーパーコピーめでたい(ミュウミュウ)。

[2016/06/27 (月) 18:39]
PAGETOP

Comment Form

PAGETOP

Trackbacks (0)

トラックバックはありません。

PAGETOP

Trackback URL

PAGETOP

Search