Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Всплывающее окно при клике! Прошу помочь! (https://javascript.ru/forum/dom-window/60247-vsplyvayushhee-okno-pri-klike-proshu-pomoch.html)

Decode 29.12.2015 00:07

SnezhanaLast, ну элементам <ul>, которые под-меню, надо добавить данные классы!

SnezhanaLast 29.12.2015 11:01

Decode,
Добавила вручную в HTML, сабменю все равно видно, а стоит убрать мешающий класс display: inline-block, так оно попросту не открывается.

Decode 29.12.2015 17:18

SnezhanaLast, уберите из CSS:
.page-sidebar-menu.page-sidebar-menu-active-submenu li > .sub-menu {
    display: inline-block !important;
 }


Вот так должно работать:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title></title>
    <style>
        .submenu-hide {
            display: none;
        }
    </style>
</head>
<body>
    <ul class="page-sidebar-menu">
        <li class="sidebar-menu-item">
            <a href="#">One</a>
            <ul class="sub-menu submenu-hide">
                <li>1</li>
                <li>2</li>
                <li>3</li>
            </ul>
        </li>
        <li class="sidebar-menu-item">
            <a href="#">Two</a>
            <ul class="sub-menu submenu-hide">
                <li>1</li>
                <li>2</li>
                <li>3</li>
            </ul>
        </li>
        <li class="sidebar-menu-item">
            <a href="#">Three</a>
            <ul class="sub-menu submenu-hide">
                <li>1</li>
                <li>2</li>
                <li>3</li>
            </ul>
        </li>
    </ul>

    <script>
        var menu = document.querySelector('.page-sidebar-menu'),
            subMenu = document.querySelectorAll('.sub-menu'), current;

        menu.onclick = function(e) {
            var target = e.target;

            while(target != this) {
                if ( target.classList.contains('sub-menu') ) break;

                if ( target.classList.contains('sidebar-menu-item') ) {
                    current = target.querySelector('.sub-menu');

                    [].forEach.call(subMenu, function(item) {
                        if (item == current) return;
                        item.classList.add('submenu-hide');
                    });

                    current.classList.toggle('submenu-hide');
                    
                    break;
                }

                target = target.parentNode;
            }

            return false;
        };

        menu.onmousedown = menu.onselectstart = function() {
            return false;
        };
    </script>
</body>
</html>

И да, добавьте еще класс элементам sidebar-menu-item <li>, которые являются основными пунктами меню.

SnezhanaLast 29.12.2015 22:07

Decode,
Удалила, изменила, класс добавила, толку ноль. Скрипт не работает, может конфликтует? Вижу, что по идее работает. Стрелки еще неверно отображаются. Не судьба мне видимо верстку на логику натянуть...

Decode 30.12.2015 01:08

SnezhanaLast, я сразу не посмотрел, оказывается у вас там 2 элемента с классом page-sidebar-menu.

В скрипте измените первую строку на:
var menu = document.querySelectorAll('.page-sidebar-menu')[1]

SnezhanaLast 01.01.2016 18:45

Decode,
С наступившим новым годом Вас!
Изменила, все осталось по прежнему. :(

Decode 02.01.2016 12:30

SnezhanaLast, спасибо, Вас тоже с Новым годом!

В консоли ошибка, надо запятую поставить после этой строки:
var menu = document.querySelectorAll('.page-sidebar-menu')[1]

SnezhanaLast 02.01.2016 17:26

Decode,
Поставила, все так же.(

Decode 03.01.2016 00:04

SnezhanaLast, вам надо со стилями разобраться. Если убрать эти два селектора, то работает.

.page-sidebar-menu.page-sidebar-menu-active-submenu li .sub-menu {
    display: none;
    width: 194px;
    z-index: 2000;
    position: absolute;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    -ms-border-radius: 4px;
    -o-border-radius: 4px;
    border-radius: 4px;
 }

.page-sidebar .page-sidebar-menu .sub-menu,
.page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu .sub-menu {
  list-style: none;
  display: none;
  padding: 0;
  margin: 8px 0 8px 0;
}


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