@hello-world-1

Как передать data-attr только в один блок, куда наведен курсор?

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

Прикладываю пример - https://jsfiddle.net/8Losb702/4/
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
$('.item').on('mouseover', '.dot', function({ delegateTarget: t }) {
  $('.thumb-target', t).attr('src', this.dataset.img);
  $('.dot', t).removeClass('select').filter(this).addClass('select');
});

или

document.querySelectorAll('.item').forEach(n => {
  n.addEventListener('mouseover', onMouseOver);
});

function onMouseOver({ target: t, currentTarget: ct }) {
  const dot = t.closest('.dot');
  if (dot) {
    ct.querySelector('.thumb-target').src = dot.dataset.img;
    ct.querySelectorAll('.dot').forEach(n => {
      n.classList.toggle('select', n === dot);
    });
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
потому что вы ищете элемент просто по классу.
Можно получить текущий элемент на котором сработало событие mouseover из event.target
Затем найти родителя .closest(контейнер), и уже в нем менять изображение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы