Ваш код по сути делает это:
- Таймер таймаута работает в течение одной секунды
- задержка на одну секунду
- исчезает в течение одной секунды
- повтор
-> если вы инициируете событие наведения мыши и, следовательно, вызываете clearTimeout в любой точке, кроме (1), вы не очищаете ни один из запущенных таймеров.
Другими словами, если вы сделаете это после, скажем, 1,5 секунды, задержка все еще работает, затем затухание, и затем вы снова вызываете setTimeout - поэтому вы пытаетесь очиститьTimeout перед вызовом setTimeout .
Вам, вероятно, следует вызвать .stop (), чтобы остановить задержку и очередь исчезновения и предотвратить запуск setTimeout после их завершения.