Показать сообщение отдельно
  #1 (permalink)  
Старый 25.12.2018, 12:50
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Помогите правильно перехватить событие
Здравствуйте, коллеги! :-)

Помогите пожалуйста с перехватом события там где нужно.

Есть карточки. Нужно навел на карточку курсор (mouseover), - появилась тень, убрал курсор, - пропала тень.

1. Я реализовал путем навешивания двух addEventListener на один элемент двух функций. Можно ли попроще?

2. Внутри карточки есть ребенок <p>, - при наведении точно на него, событие не происходит. Как сделать так, чтобы addEventListener навесить на родителя <ul> и отлавливать события только на карточках <li>, игнорируя внутренние <p>?

Спасибо!

<nav class="main__menu">
                <ul class="main__menu__list">
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">I am</p>
                    </li>
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">I have</p>
                    </li>
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">I know</p>
                    </li>
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">I want</p>
                    </li>
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">I dream</p>
                    </li>
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">Lorem</p>
                    </li>
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">Lorem</p>
                    </li>
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">Lorem</p>
                    </li>
                    <li class="main__menu__list__item js__button">
                        <p clas="main__menu__content">Lorem</p>
                    </li>
             
                </ul>
            </nav>


.main__menu__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-evenly;
}

.main__menu__list__item {
    width: 100px;
    height: 100px;
    list-style-type: none;
    font-weight: bolder;
    font-family: Tahoma;
    border-radius: 20px;
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px;
    -ms-border-radius: 20px;
    -o-border-radius: 20px;
    background-color: #69B8E7;
    text-transform: uppercase;
    color: white;
    font-size: 1em;
    text-shadow: 2px 2px blue;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 0.3rem;
    cursor: pointer;
    /* box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5); */
    transition: 0.5s;
    -webkit-transition: 0.5s;
    -moz-transition: 0.5s;
    -ms-transition: 0.5s;
    -o-transition: 0.5s;
}



.test {
    box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);
}


'use strict';

const button = document.querySelectorAll ('.js__button');

function createColor () {
  const R = Math.random () * 256;
  const G = Math.random () * 256;
  const B = Math.random () * 256;
  return `rgb(${R},${G},${B})`;
}

function createArr (arr) {
  const colorArr = [
    createColor (),
    createColor (),
    createColor (),
    createColor (),
    createColor (),
    createColor (),
    createColor (),
    createColor (),
    createColor (),
  ];
  colorArr.forEach (function (item, i) {
    arr[i].style.backgroundColor = item;
  });
}

createArr (button);

const clickButton = document.querySelector ('.main__menu__list');
clickButton.addEventListener ('mouseover', handler1);

function handler1 (event) {
  const target = event.target;
  if (target.nodeName !== 'LI') return;
  target.classList.add ('test');
  //   target.classList.remove('test');
  console.log (target);
}

clickButton.addEventListener ('mouseout', handler2);

function handler2 (event) {
  const target = event.target;
  if (target.nodeName !== 'LI') return;
  //   target.classList.add('test');
  target.classList.remove ('test');
  console.log (target);
}

Последний раз редактировалось AndriiS, 25.12.2018 в 13:02.
Ответить с цитированием