Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Клик по родителю (https://javascript.ru/forum/dom-window/67817-klik-po-roditelyu.html)

Agapkin 10.03.2017 03:34

Клик по родителю
 
ГУРУ! Помогите пожалуйста, я дилетант в этом.

Есть три div блока в каждом из которых лежат div с менюхой.

Надо:
1)при клике на один из, чтобы всплывало меню
2)при клике на другой везде закрывалось и открывалось текущее
3)при клике на родителя с открытым меню , чтобы оно закрывалось

Проблема заключается в том что при клике на дочку , т.е. на менюху , она блин закрывается.

помогите плиз .

пробовал запихать event.target - работает коряво, то закрывает то нет, я так понял, в родителе лежит менюха и иконка , если по иконки попадаешь не закрывается почему то менюха, мимо вроде закрывается , короче я хз , помогите плиз , всю голову сломал


https://jsfiddle.net/z1xo04ww/1/

Alexandroppolus 10.03.2017 09:17

https://jsfiddle.net/ycyL32sy/

рони 10.03.2017 12:26

Agapkin,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .leftmenu.block{
margin-top:15px;
width:100px;
height:100px;
background:green;
display:block;
position: relative;
}
.lalala {
  display: none;
}
.leftmenu.block.open-block-leftmenu .lalala {
    position: absolute;
    display: block;
    top: 50px;
    left: 100%;
    width: 100px;
    height: 100px;
    background: red;
}
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
  var leftmenu = $(".leftmenu");
  leftmenu.on("click",function(event) {
  if($(event.target).is(".lalala")) return;
  leftmenu.not($(this).toggleClass("open-block-leftmenu"))
  .removeClass("open-block-leftmenu")
})
});
  </script>
</head>

<body>
<div class="leftmenu block">
  <div class="lalala">
  </div>
</div>
<div class="leftmenu block">
  <div class="lalala">

  </div>
</div>
<div class="leftmenu block">
  <div class="lalala">

  </div>
</div>

</body>
</html>

Agapkin 10.03.2017 15:23

Спасибо Alexandroppolus, рони, ОГРОМНОЕ за помощь!!!!

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

https://jsfiddle.net/ycyL32sy/2/

рони 10.03.2017 16:18

Agapkin,
делайте пример минимальный, но с нужной структурой и классами сразу.
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .leftmenu.block{
margin-top:15px;
width:100px;
height:100px;
background:green;
display:block;
position: relative;
}
.nav.fm-menu-vertical {
  display: none;
}
.leftmenu.block.open-block-leftmenu .nav.fm-menu-vertical {
    position: absolute;
    display: block;
    top: 50px;
    left: 100%;
    width: 300px;
    height: 100px;
    background: red;
}
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
  var leftmenu = $(".leftmenu");
  leftmenu.on("click",function(event) {
  if($(event.target).closest(".fm-menu-vertical").length) return;
  leftmenu.not($(this).toggleClass("open-block-leftmenu"))
  .removeClass("open-block-leftmenu")
})
});

  </script>
</head>

<body>
<div class="leftmenu block">
  <i class="fa fa-question" aria-hidden="true"></i>
  <h3>lalala</h3>
    <ul class="nav fm-menu-vertical level-1">

    </ul>
</div>

  <div class="leftmenu block">
  <i class="fa fa-question" aria-hidden="true"></i>
  <h3>Сервис и помощь</h3>
   <ul class="nav fm-menu-vertical level-1">

          <li>
        <a data-toggle="collapse" href="#menu225206965" class="link fake collapsed" aria-expanded="false">
          <i class="fa fa-shopping-bag" aria-hidden="true"></i>
          <span>Обувь</span>
        </a>
                              <div class="collapse" id="menu225206965" aria-expanded="false" style="height: 0px;">
              <ul class="nav level-2">
                                  <li class="parent">
                    <a href="/about/shoes/care-shoes/" class="link">
                      <i class="fa " aria-hidden="true"></i>
                      <span>Уход за обувью</span>
                    </a>
                  </li>
                                  <li class="parent">
                    <a href="/about/shoes/choose-size/" class="link">
                      <i class="fa " aria-hidden="true"></i>
                      <span>Как подобрать размер</span>
                    </a>
                  </li>
                                  <li class="parent">
                    <a href="/about/shoes/size-chart/" class="link">
                      <i class="fa " aria-hidden="true"></i>
                      <span>Таблица размеров</span>
                    </a>
                  </li>
                              </ul>
            </div>
                        </li>


          <li class="">
        <a href="/about/color/" class="link">
          <i class="fa fa-eyedropper" aria-hidden="true"></i>
          <span>Цвет</span>
        </a>
      </li>


          <li class="">
        <a href="/about/bonus-system/" class="link">
          <i class="fa fa-rub" aria-hidden="true"></i>
          <span>Бонусная система</span>
        </a>
      </li>


          <li class="">
        <a href="/about/make-return/" class="link">
          <i class="fa fa-refresh" aria-hidden="true"></i>
          <span>Как сделать возврат</span>
        </a>
      </li>


          <li class="">
        <a href="/about/make-order/" class="link">
          <i class="fa fa-calculator" aria-hidden="true"></i>
          <span>Как сделать заказ</span>
        </a>
      </li>


          <li class="">
        <a href="/about/status-client/" class="link">
          <i class="fa fa-user-circle" aria-hidden="true"></i>
          <span>Статусы клиентов</span>
        </a>
      </li>


          <li class="">
        <a href="/about/question-answer/" class="link">
          <i class="fa fa-question-circle" aria-hidden="true"></i>
          <span>Вопрос-ответ</span>
        </a>
      </li>

  </ul></div>
  <div class="leftmenu block">
  <i class="fa fa-question" aria-hidden="true"></i>
  <h3>Сервис и помощь</h3>
   <ul class="nav fm-menu-vertical level-1">

          <li>
        <a data-toggle="collapse" href="#menu225206965" class="link fake collapsed" aria-expanded="false">
          <i class="fa fa-shopping-bag" aria-hidden="true"></i>
          <span>Обувь</span>
        </a>
                              <div class="collapse" id="menu225206965" aria-expanded="false" style="height: 0px;">
              <ul class="nav level-2">
                                  <li class="parent">
                    <a href="/about/shoes/care-shoes/" class="link">
                      <i class="fa " aria-hidden="true"></i>
                      <span>Уход за обувью</span>
                    </a>
                  </li>
                                  <li class="parent">
                    <a href="/about/shoes/choose-size/" class="link">
                      <i class="fa " aria-hidden="true"></i>
                      <span>Как подобрать размер</span>
                    </a>
                  </li>
                                  <li class="parent">
                    <a href="/about/shoes/size-chart/" class="link">
                      <i class="fa " aria-hidden="true"></i>
                      <span>Таблица размеров</span>
                    </a>
                  </li>
                              </ul>
            </div>
                        </li>


          <li class="">
        <a href="/about/color/" class="link">
          <i class="fa fa-eyedropper" aria-hidden="true"></i>
          <span>Цвет</span>
        </a>
      </li>


          <li class="">
        <a href="/about/bonus-system/" class="link">
          <i class="fa fa-rub" aria-hidden="true"></i>
          <span>Бонусная система</span>
        </a>
      </li>


          <li class="">
        <a href="/about/make-return/" class="link">
          <i class="fa fa-refresh" aria-hidden="true"></i>
          <span>Как сделать возврат</span>
        </a>
      </li>


          <li class="">
        <a href="/about/make-order/" class="link">
          <i class="fa fa-calculator" aria-hidden="true"></i>
          <span>Как сделать заказ</span>
        </a>
      </li>


          <li class="">
        <a href="/about/status-client/" class="link">
          <i class="fa fa-user-circle" aria-hidden="true"></i>
          <span>Статусы клиентов</span>
        </a>
      </li>


          <li class="">
        <a href="/about/question-answer/" class="link">
          <i class="fa fa-question-circle" aria-hidden="true"></i>
          <span>Вопрос-ответ</span>
        </a>
      </li>

  </ul></div>

</body>
</html>

Agapkin 10.03.2017 17:30

Цитата:

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

- ок, буду иметь ввиду, я думал, что может что-то важное не передал в примере и решил весь код показать.
рони, ОГРОМНОЕ ВАМ ЧЕЛОВЕЧЕСКОЕ СПАСИБО !!!!


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