2011-06-27 12 views
8

可視のすべての兄弟に関して要素のインデックスを取得したいと思います。すべての可視兄弟に関するjQueryインデックス()

td.index()は、他のすべてのtd兄弟にtdのインデックスをフェッチします。

しかし、これらのTDの一部がdisplay:noneに設定されているとどうなりますか。私はインデックスを計算するときにそれらを除外したい。 td.index(':visible')は機能していないようです。

+0

を設定する代わりに、他のTD要素でvisibilityプロパティを非表示に設定することです。本当のインデックスは得られません。なぜなら、何もしないでください:) – Val

答えて

25

上記の内容は、あなたが求めていることを行うはずです。基本的に、検索したい要素のセットを取得し、その中の要素のインデックスを取得します。

http://jsfiddle.net/3NYY9/

EDIT:jQueryの1.8 andSelfのようは廃止されましたとaddBackは、その代わりに使用する必要があります。

var $td = $("#theTD") 

$td.siblings(":visible").addBack().index($td); 

http://jsfiddle.net/3NYY9/45/

+0

これは魔法です.. – samccone

+0

ちょっとハッキーに見えますが、あなた自身をコレクションに追加するのではなく、親の目に見える子供を飼うだけではいかがですか? $ td.parent()。children( ":visible")。インデックス($ td); – user1689571

+0

@ user1689571これはほぼ同等です。唯一の違いは、要素自体が表示されない場合、あなたの方法は-1を返すことです。それが心配しなければあなたの方法は完全に有効です。 –

-3

可視性および表示はCSSでかなり異なっています。あなたがしたいのは、display:none

+0

jQueryの ':visible'は少し異なります。 –

+0

あなたは正しいです。 – Anand

関連する問題