そうです... <ul style = "display:block;">要素をすべて見つけて、display:noneに設定できるようにする必要があります。
私はここで正しい道を進んでいると思いますが...
jQuery('#adminMenu li').find("ul").css('display');
上級ユーザー向け:スタイルを1行で見つけて変更するにはどうすればよいですか?
述べたようにそれはトリッキーですが、他の方法で解決できます。最も簡単なのは:
$("#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");
属性セレクターと 'contains'オプションを使用できる場合があります
$('#adminMenu li ul[style*="display:block"]').hide()
これは基本的に「スタイル属性にテキストdisplay:blockが含まれているすべてのul」を示します
フィルターを使用できます。 ( http://api.jquery.com/filter/ )
だからあなたは以下のようにすることができます。
$('ul').filter(function() {
return $(this).css('display') == 'block';
});
$('#adminMenu li').find("ul:visible").css('display', 'none');
または
$('#adminMenu li').find("ul:visible").hide();
または
$('#adminMenu li ul:visible').hide();
いくつかの方法を挙げます
あなたは視覚効果のためにfadeOut()またはslideUp()メソッドを使うことができます:
jQuery('#adminMenu li').find("ul").fadeOut('fast');
jQuery('#adminMenu li').find("ul").slideUp('fast');
$('#adminMenu li ul').hide();
1行でそれを行う方法がわからないが、ここでは、さらに2行で行う方法を示します。
jQuery('#adminMenu li').find("ul").each(function (){
if($(this).css("display") == "block"){
// do something
}
});
(display: block
要素だけでなく)すべての可視要素を処理したい場合は、代わりに:visible
セレクターを試すことができます。