web-dev-qa-db-ja.com

特定のスタイルの要素を見つけるためにjQuery.findを使用する必要がある

そうです... <ul style = "display:block;">要素をすべて見つけて、display:noneに設定できるようにする必要があります。

私はここで正しい道を進んでいると思いますが...

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

上級ユーザー向け:スタイルを1行で見つけて変更するにはどうすればよいですか?

24
Steven

述べたようにそれはトリッキーですが、他の方法で解決できます。最も簡単なのは:

$("#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");
26
cletus

属性セレクターと 'contains'オプションを使用できる場合があります

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

これは基本的に「スタイル属性にテキストdisplay:blockが含まれているすべてのul」を示します

23
Corey Downie

フィルターを使用できます。 ( http://api.jquery.com/filter/

だからあなたは以下のようにすることができます。

$('ul').filter(function() {
    return $(this).css('display') == 'block';
});
7
asankasri
$('#adminMenu li').find("ul:visible").css('display', 'none');

または

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

または

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

いくつかの方法を挙げます

0
Russ Cam

あなたは視覚効果のためにfadeOut()またはslideUp()メソッドを使うことができます:

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

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

1行でそれを行う方法がわからないが、ここでは、さらに2行で行う方法を示します。

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

display: block要素だけでなく)すべての可視要素を処理したい場合は、代わりに:visibleセレクターを試すことができます。

0
Seb