Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как определить на каком элементе произошло событие hover(или mouseenter)? (https://javascript.ru/forum/offtopic/45977-kak-opredelit-na-kakom-ehlemente-proizoshlo-sobytie-hover-ili-mouseenter.html)

monolithed 24.03.2014 11:04

Основное отличие mouseenter/mouseleave от mouseover/mouseout заключается в том, что на на дочерних элементах нельзя поймать событие.

Именно поэтому, если нужно делегирование, то используйте mouseover/mouseout:

<script>
document.addEventListener('DOMContentLoaded', function () {
    var div = document.getElementById('div');

    div.addEventListener('mouseover', function (event) {
       var target = event.target;

      while (target != this) {
         if (target.tagName.toLowerCase() == 'p') {
            alert(target.textContent);
            break;
         }

         target = target.parentNode;
      }
    });   
});
</script>
  
<div id="div">
    <p>text 1</p>
    <p>text 2</p>
</div>


А подписывать все дочерние элементы на события, ради mouseenter/mouseleave это по меньшей мере глупо.


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