Ответы пользователя по тегу Кросс-браузерность
  • Почему событие mouseenter срабатывает 2 раза?

    @maxceem
    1. Событие срабатывает два раза потому что когда мы наводим на блок то курсор наводится на фото, внутренний блок .item-а, и тригерит событие. После чего картинка сразу же удаляется, и получается что курсор уже становится наведенным на сам блок, и браузер видать считает это за новое наведение. Ведь по сути target - элемент на который наведен курсор - изменился. (Подтверждения что оно работает именно так у меня нет, но судя из экпериментов - так).

    2. Это событие нативно в Хроме довольно недавно, оно пришло из ИЕ и jquery его симулирует для совместимости api.jquery.com/mouseenter/:
    The mouseenter JavaScript event is proprietary to Internet Explorer. Because of the event's general utility, jQuery simulates this event so that it can be used regardless of browser.
    Допустим близкое и более простое событие onmouseover работает одинаково что-то через jquery, что нативно, и выдает тоже 2 события, скорее всего по схеме, которую я описал в первом пункте.

    3. Решений может быть много, в зависимости от того, какая реальная задача. В конкретно текущем примере, лучше вообще не использовать jquery, а сделать через css и псевдоклас :hover. Если это всего лишь упрощенный пример более сложной задачи, для которой css не подходит, то нужно смотреть тогда полную ситуацию, скорее всего нужно будет хитрить. Можно вешать событие на то, что должно исчезать, правда его лучше не удалять, а отсоединять .detach() или просто прятать .hide().
    Ответ написан