Ответы пользователя по тегу JavaScript
  • Почему событие 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().
    Ответ написан
  • Не срабатывает onClick?

    @maxceem
    onclick у вас срабатывает как нужно, с ним все хорошо. У вас проблема в другом.
    У вас стоит таймер, который каждую миллисекунду вызывает функцию select(), которая постоянно обновляет адрес картинки. То есть мы нажали, сработал onclick, картинка обновилась как нужно, но уже через 1 миллисекунду срабатывает setInterval('select()', 1);, вызывает функцию select(), которая в зависимости от того, что выбрано в выпадающем списке регионов, обновляет картинку.
    1. Чтобы увидеть что onclick работает хорошо, уберите строчку setInterval('select()', 1); внутри html кода
    2. Эту строчку вы скорее всего написали, чтобы подсвечивать регион в зависимости от того, что выбрано в списке, но того, что вы указали в списке<select id="d1" onchange="select();"> должно быть достаточно.
    Ответ написан
    Комментировать