Как вывести подсписок с помощью mouseover и mouseout?

232
02 мая 2019, 12:20

При наведении курсора на елемент родителя нужно чтобы выводился подсписок последующих елементов. Например,при наведении на Element 2 высветляется Element 2.1, Element 2.2, Element 2.3, Element 2.4.

<div> 
    <ul> 
        <li>Element 1</li> 
        <li>Element 2 
            <ul> 
                <li>Element 2.1</li> 
                <li>Element 2.2</li> 
                <li>Element 2.3</li> 
                <li>Element 2.4</li> 
            </ul> 
        </li> 
        <li>Element 3</li> 
        <li>Element 4 
            <ul> 
                <li>Element 4.1</li> 
                <li>Element 4.2</li> 
                <li>Element 4.3</li> 
                <li>Element 4.4</li> 
            </ul> 
        </li> 
    </ul> 
</div>

Answer 1

No js:

ul li ul { 
  display: none; 
} 
 
ul li:hover ul { 
  display: block; 
}
<div> 
  <ul> 
    <li>Element 1</li> 
    <li>Element 2 
      <ul> 
        <li>Element 2.1</li> 
        <li>Element 2.2</li> 
        <li>Element 2.3</li> 
        <li>Element 2.4</li> 
      </ul> 
    </li> 
    <li>Element 3</li> 
    <li>Element 4 
      <ul> 
        <li>Element 4.1</li> 
        <li>Element 4.2</li> 
        <li>Element 4.3</li> 
        <li>Element 4.4</li> 
      </ul> 
    </li> 
  </ul> 
</div>

Yes js:

document.querySelectorAll("div > ul > li").forEach(i => { 
  i.addEventListener("mouseenter", function(e) { 
    var ul = this.querySelector("ul"); 
    if (ul) 
      ul.classList.add("show"); 
  }); 
  i.addEventListener("mouseleave", function(e) { 
    var ul = this.querySelector("ul"); 
    if (ul) 
      ul.classList.remove("show"); 
  }); 
});
ul li ul { 
  display: none; 
} 
 
.show { 
  display: block; 
}
<div> 
  <ul> 
    <li>Element 1</li> 
    <li>Element 2 
      <ul> 
        <li>Element 2.1</li> 
        <li>Element 2.2</li> 
        <li>Element 2.3</li> 
        <li>Element 2.4</li> 
      </ul> 
    </li> 
    <li>Element 3</li> 
    <li>Element 4 
      <ul> 
        <li>Element 4.1</li> 
        <li>Element 4.2</li> 
        <li>Element 4.3</li> 
        <li>Element 4.4</li> 
      </ul> 
    </li> 
  </ul> 
</div>

READ ALSO
Получить данные из JSON через JQuery ajax

Получить данные из JSON через JQuery ajax

Как вывести данные из json через ajax jquery? Заранее благодарен за любую помощь

191
Реализация парсера инстаграм профилей node.js

Реализация парсера инстаграм профилей node.js

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

243
Открытое аккордеон меню

Открытое аккордеон меню

Есть меню на wordpress, использовал css menu walker для аккордеона, не могу понять как заставить родительский пункт меню быть открытым если открыта дочерняя...

213
Получить время с сервера времени с помощью JS (десктопное приложение nw.js) для проверки подлинности

Получить время с сервера времени с помощью JS (десктопное приложение nw.js) для проверки подлинности

Так уж случилось, что я написал годное приложение на nwjs и теперь требуется его защитить с каким-либо способом

210