Необходимо использовать jQuery.find для поиска элемента с определенным стилем
Правильно... Мне нужно найти все < ul style = "display: block;" > элементы, поэтому я могу установить его на отображение: 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");
Ответ 2
Возможно, вы сможете использовать селектор атрибутов, а опция "содержит"
$('#adminMenu li ul[style*="display:block"]').hide()
В основном это говорит о том, что любой атрибут стиля ul, который содержит текст, выглядит следующим образом: block
Ответ 3
Вы можете использовать фильтр. (http://api.jquery.com/filter/)
Итак, вы можете сделать, как показано ниже.
$('ul').filter(function() {
return $(this).css('display') == 'block';
});
Ответ 4
$('#adminMenu li').find("ul:visible").css('display', 'none');
или
$('#adminMenu li').find("ul:visible").hide();
или
$('#adminMenu li ul:visible').hide();
чтобы назвать несколько способов
Ответ 5
Вы можете использовать методы fadeOut() или slideUp() для визуального эффекта:
jQuery('#adminMenu li').find("ul").fadeOut('fast');
jQuery('#adminMenu li').find("ul").slideUp('fast');
Ответ 6
$('#adminMenu li ul').hide();
Ответ 7
Не знаю, как это сделать в одной строке, но вот как вы можете сделать это еще пару:
jQuery('#adminMenu li').find("ul").each(function (){
if($(this).css("display") == "block"){
// do something
}
});
Если вы хотите обработать все видимые элементы (вместо только тегов display: block
), вы можете попробовать селектор :visible
.