Как с помощью jQuery отключить на время все события hover и click, в том числе css:hover?
Приветствую.
Допиливаю сайт. Сайт сделан на говнопрессе, поэтому дописывать свои скрипты очень "весело".
При клике на кнопку два условия:
1. Отключаем все события hover, click, css:hover для блока "block"
2. Возвращаем все отключенные события в п.1
Проблема в том, что конечно же код для наведения и нажатия писали тысячи программистов на протяжении 20 лет, или сколько там вордпрессу. Поэтому не могу отследить какие именно события и где. К тому же там стооолько плагинов понаставлено.. Нужно на верняк отключать динамичность блока и возвращать ему динамичность. Наведение и клик.
Вариант для сильных:
накрыть элемент прозрачным блоком.
При этом вы становитесь очередным из тех тысяч, которые писали эту красоту 20 лет.
Для умных:
Навешенные события можно посмотреть через девтулс фаерфокса.
Можно попытаться повесить свой обработчик на родительский элемент, который будет делать stopPropagation. С css все сложнее, вы не можете просто так отменить css hover, разве что временно менять класс, к которому привязана эта css-динамика.
в девтулсе вообще ошибка на ошибке на события... на сайте заказчика, где пара страниц, по сути простых статичных - около 20 js-ов в шапке подключается. в админке одних только "слайдеров" 4 штуки.... непонятно зачем... и прочего... блин нервы уже не выдерживают. А чистый самописный движок клиент не хочет, прост добавить пару фишичек и все..
Прозрачный блок. Спасибо. Идея отличная.
С превентдефолт не прокатит, это только на клик.. А там по ховеру и js выполняется и css.
Да и кстати - это все же и самый лучший вариант - с абсолютным блоком. Хайд-шоу. Никаких отключений-подключений событий.
AntohaRomaha: Да, ошибся спросонья, stopPropagation а не preventDefault https://jsfiddle.net/43q3q4pc/
Обратите внимание на третий параметр, в нем вся магия.
Но и она не поможет, если изначальный обработчик тоже был с useCapture=true