2009-10-13 7 views
17

右...私は表示するように設定するために、すべて< ul style = "display:block;">要素を見つける必要があります。特定のスタイルを持つ要素を見つけるためにjQuery.findを使用する必要があります

私はなく、かなりそこに私はここに正しい道の上だと思う...しかし:事前のユーザーの場合

jQuery('#adminMenu li').find("ul").css('display'); 

:どのように私は1つのラインでスタイルを見つけて変更することができますか?

答えて

24

に名前を付けます。最も簡単なのは:

$("#adminMenu li ul:visible").hide(); 

アイテムが隠されているかどうかを仮定します。もちろん、あなたはそれらをすべて非表示にしたいと考えているだけです。

$("#adminMenu li ul").hide(); 

CSSスタイルを直接変更しないようにしてください。それは問題です。あなたが検索するのが難しいことを発見しているので、逆行するのは難しいです。

#adminMenu li ul { display: none; } 
ul.block { display: block; } 

と::代わりにクラスを使用します

$("#adminMenu li ul").removeClass("block"); 

または

$("#adminMenu li ul.block").removeClass("block"); 
0
$('#adminMenu li').find("ul:visible").css('display', 'none'); 

または

$('#adminMenu li').find("ul:visible").hide(); 

または

$('#adminMenu li ul:visible').hide(); 

述べたようにトリッキーだが解ける他の方法でいくつかの方法

0

あなたがフェードアウト()またはslideUpを()視覚効果のための方法を使用しcoud:

jQuery('#adminMenu li').find("ul").fadeOut('fast'); 

jQuery('#adminMenu li').find("ul").slideUp('fast'); 
0
$('#adminMenu li ul').hide(); 
+0

あなたが最後に間違った引用符を持っています。) –

+0

おかげで、私は私が間違った答えを持っていると思うが、それはこの1より次のとおりです。http:// stackoverflowの。/ 1562680#1562680 – powtac

0

は1行でそれを行う方法を知っているが、ここにあなたがカップルより多くでそれを行うことができる方法だしないでください:あなたが望む場合は

jQuery('#adminMenu li').find("ul").each(function(){ 
    if($(this).css("display") == "block"){ 
    // do something 
    } 
}); 

は、すべての可視要素(代わりにのみdisplay: blockものを処理することです)、代わりに:visibleセレクタを試すことができます。あなたが使用することができます

19

あなたは、属性セレクタを使用することができ、およびオプション

$('#adminMenu li ul[style*="display:block"]').hide() 

を「含む」ことがありますが、これは基本的に「ブロックのスタイル属性は、テキスト表示を含む任意のUL」を語りますフィルタ。 (http://api.jquery.com/filter/

以下のようにすることができます。

$('ul').filter(function() { 
    return $(this).css('display') == 'block'; 
}); 
+0

私にとって(jQuery-1.9.0では)これは '構文エラー、認識できない式:ul [style * = display:block] ' –

+0

引用符が含まれないように編集 –

+1

これは、ワイルドカードセレクタを使用することをお勧めします。それが他の提案より速いのだろうかと思う。 OP:もっと広いターゲットを考えたいかもしれません。たとえば、何らかの理由で 'display:block'の間に完全に有効なスペースがあった場合、これはうまくいかないでしょう。しかしこれはあなたの目的にあまりにも広すぎないと仮定して、[スタイル* = "ブロック"]します。 – dhaupin

関連する問題