Подтвердить что ты не робот

Необходимо использовать jQuery.find для поиска элемента с определенным стилем

Правильно... Мне нужно найти все < ul style = "display: block;" > элементы, поэтому я могу установить его на отображение: none.

Я думаю, что я на правильном пути здесь... но не совсем там:

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

Для продвинутых пользователей: как я могу найти и изменить стиль с помощью одной строки?

4b9b3361

Ответ 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.