2009-04-16 4 views
2

私は自分のページに要素のコレクションを持っています。

ので:

$(".someClass") 

どのようにループを通過すると、これを把握することはできますか?なぜなら、可視であれば、別の機能を起動する必要があるからです。

答えて

9
$(".someClass").each(function(){ 
    if($(this).is(":visible")){ 
    //item is visible: do something 
    } 
}); 

どうですか?あなたは何ができるか

+0

ええ、私はこれが彼が探しているものだと確信しています –

+1

うん、私はそれをさらに最適化できるとは思わない。よくできました。 – KyleFarris

+1

$( '工ass:目に見える')。各(関数()より最適化されていないことを う{ //項目が表示されている、何か を行う} – Matt

2
$(".someClass:visible") 

が表示されます。

1

your_function()はあなたの関数の名前です

$(".someClass").each(function(x) { if (x.style.display != "none" && x.style.visibility != "hidden") { your_function(); } }); 

1

$('.someClass').is(':visible')のすべてのソリューションは信頼できません。特定の要素のスタイルがdisplay:noneまたはvisibility:hiddenであるかどうかがわかります。これはではなく、で、要素が可視かどうかと同じです!

はこのような状況を考えてみましょう:

​​

誰もが$('.someClass')が指定した要素が非表示であることがわかります。しかし$('.someClass').is(':visible')trueを返します!

唯一の防水ソリューションは、$('.someClass')is(':visible')をチェックするだけでなく、すべての親要素もチェックすることです。 がない場合のみ、親のは、is(':visible') === falseを保持しているため、実際には$('.someClass')が表示されます。

+0

実際、彼ら?。このケースを説明するために、バージョン1.3.2の可視と非表示セレクタのロジックを見直しました:http://docs.jquery.com/Release:jQuery_1.3.2#:visible.2F:hidden_​​Overhauled – montrealist

+0

華麗で、私は逃しましたその改善!ありがとう –

関連する問題