Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   поиск классов внутри тега (https://javascript.ru/forum/jquery/39076-poisk-klassov-vnutri-tega.html)

yozuul 14.06.2013 13:15

поиск классов внутри тега
 
помогите дописать скрипт

если внутри тега с классом .main есть тег с классом .main2, то для всех тегов с именами классов .sub расположенных после найденного .main2 и до ближайшего класса .end (их там несколько) задать стиль display:inline

main2list = $('.main').find('.main2');
if (???){
    main2list.find('.sub, .end').each(

      function() {
         if ($(this).hasclass('.sub')) $(this).css('display', 'inline')
         if ($(this).hasclass('.end')) return;

      }
    );
}

ksa 14.06.2013 13:38

yozuul, ты хоть ХТМЛ разметку свою покажи... :D

ksa 14.06.2013 13:39

Цитата:

Сообщение от yozuul
main2list = $('.main').find('.main2');

main2list = $('.main .main2');

devote 14.06.2013 13:47

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="main">
    <div class="main2">1</div>
    <div class="sub">2</div>
    <div class="sub">3</div>
    <div class="end">4</div>
    <div class="sub">5</div>
    <div class="sub">6</div>
    <div class="end">7</div>
</div>
<script>
$('.main .main2 ~ .sub').filter(':not(.end ~ .sub)').css('color', 'red');
</script>

yozuul 14.06.2013 14:18

Цитата:

Сообщение от ksa (Сообщение 256280)
yozuul, ты хоть ХТМЛ разметку свою покажи... :D

многоуровневое меню.

<ul id="main_menu">
  <li class="shme_a"></li>
    <li class="shme_aa"></li>
    <li class="shme_aa"></li>
  <li class="shme_s"></li>
  <li class="shme_a"></li>
</ul>


родительским элементам задается класс .shme_a, всем дочерним, в зависимости от вложенности .shme_aa, shme_aaa и тд.
активным родительским элементам задается класс .shme_s, всем дочерним, в зависимости от вложенности .shme_ss, shme_sss и тд.

Нужно скрывать и раскрывать меню в зависимости от выбранных элементов. по умолчанию все дочерние теги скрыты

devote,
красиво)
все работает так как и спрашивал, но к моему примеру все равно не подходит.

не пойму как это реализовать.

ksa 14.06.2013 14:27

Цитата:

Сообщение от yozuul
многоуровневое меню

Но там нет такого
Цитата:

Сообщение от yozuul
внутри тега с классом .main есть тег с классом .main2, то для всех тегов с именами классов .sub расположенных после найденного .main2 и до ближайшего класса .end


ksa 14.06.2013 14:28

Цитата:

Сообщение от yozuul
но к моему примеру все равно не подходит

:lol:
Так ты сделай нормальный пример... Нормально задай вопрос по твоему же примеру...
Оно гляди и прояснится! ;)

danik.js 14.06.2013 14:29

Цитата:

Сообщение от yozuul
многоуровневое меню.

Вот многоуровневое меню:
<ul id="main_menu">
  <li class="shme_a">
      <ul>
        <li class="shme_aa"></li>
        <li class="shme_aa"></li>
      </ul>
  </li>
  <li class="shme_s"></li>
  <li class="shme_a"></li>
</ul>


А у тебя один уровень.

yozuul 14.06.2013 14:31

Цитата:

Сообщение от ksa (Сообщение 256301)
:lol:
Так ты сделай нормальный пример...

тогда вот так:
многоуровневое меню.

<ul id="main_menu">
  <li class="shme_a"></li>
    <li class="shme_aa"></li>
    <li class="shme_aa"></li>
  <li class="shme_s"></li>
  <li class="shme_a"></li>
</ul>


родительским элементам задается класс .shme_a, всем дочерним, в зависимости от вложенности .shme_aa, shme_aaa и тд.
активным родительским элементам задается класс .shme_s, всем дочерним, в зависимости от вложенности .shme_ss, shme_sss и тд.

Нужно скрывать и раскрывать меню в зависимости от выбранных элементов.

1. Если внутри #main_menu в .li не встречается буква 's', то css для .li с именами классов с кол-вом букв 'а' > 1 - стиль display:none //если ни один из родительских элементов не выбран - скрываем все дочерние

2. Если внутри #main_menu в .li встречается одна буква 's', то css для .li с именами классов с кол-вом букв 'а' > 2, и .li c именами классов с кол-вом букв 'a' > 1, раположенных перед найденным .li с буквой 's' и после ближайшего .li с кол-вом букв 'a'=1 - стиль display:none //если выбран любой родительский, то раскрываем его второй уровень, и скрываем все дочерние др. родительских и скрываем дочерние 3 и более уровней текущего

3. Если внутри #main_menu в .li встречается две буквы 's', то css для .li с именами классов с кол-вом букв 'а' > 1, расположенных перед найденным 's' и после ближайшего 'a'< 3 - стиль display:none //если выбран третий уровень меню, скрываем все меню 2 и 3 уровня др. родительских.

yozuul 14.06.2013 14:32

Цитата:

Сообщение от danik.js (Сообщение 256302)
А у тебя один уровень.

кусок показан


Часовой пояс GMT +3, время: 06:50.