Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переприсвоение CSS-стиля пунктов меню на лету (https://javascript.ru/forum/dom-window/66972-pereprisvoenie-css-stilya-punktov-menyu-na-letu.html)

Syfer43 20.01.2017 19:14

Переприсвоение CSS-стиля пунктов меню на лету
 
Добрый день/вечер уважаемые господа, знатоки, форумчане!
Имеется следующая проблема:
Имеем сайт(WP), на котором навигационное меню строится через javascript:Void(). Проблема в том, что при данном формировании, получается код, вида:
<ul class=nav>
<li class=nav-item>Пункт 1</li>
<li class=nav-item>Пункт 2</li>
<li class=nav-item>Пункт 3</li>
</ul>


однако, я имею острую необходимость, некоторые пункты подменю стилизовать иначе(цвет, размер), c CSS проблем не возникло, однако, как бы так хитро поменять класс.(понятно, что используя .removeClass и .addCLass), но, к чему привязаться? какое условие? прошу помощи, сам уже понимаю, что, где и как.


рони 20.01.2017 19:33

Цитата:

Сообщение от Syfer43
какое условие?

это должны определить вы сами scroll? ready? click?

Syfer43 20.01.2017 19:40

Прошу прощения. Не верно выразил мысль(похоже устал очень, извиняюсь), делать это нужно, при documentReady. Но, как указать, какие именно пункты меню должны заиметь нужный класс.

рони 20.01.2017 19:44

Цитата:

Сообщение от Syfer43
Но, как указать, какие именно пункты меню должны заиметь нужный класс.

Цитата:

Сообщение от рони
это должны определить вы сами

что вы хотите сделать, по прежнему непонятно

Syfer43 20.01.2017 19:55

У определённых меню поменять класс. Однако, уникального у них, только урл, и то, что между тегами <li>

рони 20.01.2017 19:59

Syfer43,
я пас ... подожду телепата.

Syfer43 20.01.2017 21:11

Цитата:

Сообщение от рони (Сообщение 441701)
Syfer43,
я пас ... подожду телепата.

:agree:
Ок, попробую еще раз:
есть меню, в них есть поменю:
<ul>
  <li>1</li>
     <ul>
       <div class="title">tit1</div>
       <li class=nav-item><a href=# />1.1</li>
       <li class=nav-item><a href=# />1.2</li>
       <li class=nav-item><a href=# />1.n</li>
     </ul>
  <li>2</li>
     <ul>
       <div class="title">tit2</div>
       <li class=nav-item><a href=# />2.1</li>
       <li class=nav-item><a href=# />2.2</li>
       <li class=nav-item><a href=# />2.n</li>
     </ul>
  <li>3</li>
     <ul>
       <div class="title">tit3</div>
       <li class=nav-item><a href=# />3.1</li>
       <li class=nav-item><a href=# />3.2</li>
       <li class=nav-item><a href=# />3.n</li>
     </ul>
  <li>4</li>
     <ul>
       <div class="title">tit4</div>
       <li class=nav-item><a href=# />4.1</li>
       <li class=nav-item><a href=# />4.2</li>
       <li class=nav-item><a href=# />4.n</li>
     </ul>
  <li>nn</li>
     <ul>
       <div class="title">titN</div>
       <li class=nav-item><a href=# />nn.1</li>
       <li class=nav-item><a href=# />nn.2</li>
       <li class=nav-item><a href=# />nn.n</li>
     </ul>
</ul>


как у пунктов 4.1, 4.2, 4.n заменить class nav-iten, на классы nav1,nav2,nav3 ?
:write:

рони 20.01.2017 21:30

Syfer43,
можно так ...
$(function() {
    $('.nav-item:contains("4.")').each(function(indx, el) {
        $(el).removeClass('nav-item').addClass('nav' + ++indx)
    });
});

Syfer43 20.01.2017 21:35

Ох, попробую)) спасииииибо!

Syfer43 21.01.2017 09:48

с просонья не доуказал некоторых тонкостей
<ul class="nav">
  <li class=nav-item>1</li>
     <ul class=nav-sub>
       <div class="title">tit1</div>
       <li class=nav-item><a href=# />1.1</li>
       <li class=nav-item><a href=# />1.2</li>
       <li class=nav-item><a href=# />1.n</li>
     </ul>
  <li class=nav-item>2</li>
     <ul class=nav-sub>
       <div class="title">tit2</div>
       <li class=nav-item><a href=# />2.1</li>
       <li class=nav-item><a href=# />2.2</li>
       <li class=nav-item><a href=# />2.n</li>
     </ul>
  <li class=nav-item>3</li>
     <ul class=nav-sub>
       <div class="title">tit3</div>
       <li class=nav-item><a href=# />3.1</li>
       <li class=nav-item><a href=# />3.2</li>
       <li class=nav-item><a href=# />3.n</li>
     </ul>
  <li class=nav-item>4</li>
     <ul class=nav-sub>
       <div class="title">tit4</div>
       <li class=nav-item><a href=# />4.1</li>
       <li class=nav-item><a href=# />4.2</li>
       <li class=nav-item><a href=# />4.n</li>
     </ul>
  <li class=nav-item>nn</li>
     <ul class=nav-sub>
       <div class="title">titN</div>
       <li class=nav-item><a href=# />nn.1</li>
       <li class=nav-item><a href=# />nn.2</li>
       <li class=nav-item><a href=# />nn.n</li>
     </ul>
</ul>

поэтому, используя предложенный вами вариант, построенный на неверных данных, сообщенных мной, изменяется более вышестоящий li

т.е.
<li class=nav-item>4</li>
     <ul class=nav-sub>
       <div class="title">tit4</div>
       <li class=nav-item><a href=4.1 />4.1</li>
       <li class=nav-item><a href=4.2 />4.2</li>
       <li class=nav-item><a href=4.n />4.n</li>
     </ul>


меняется на
<li class=nav1>4</li>
     <ul class=nav-sub>
       <div class="title">tit4</div>
       <li class=nav-item><a href=4.1 />4.1</li>
       <li class=nav-item><a href=4.2 />4.2</li>
       <li class=nav-item><a href=4.n />4.n</li>
     </ul>


подскажите, как докрутить?


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