Чиним jquery.mousewheel

Недавно прикручивала к одному сайту «карусельку». Симпатичный плагин на jQuery. Быстрый, кроссбраузерный, аккуратный. Но почему-то каруселька никак не хотела вращаться при прокрутке колесика мышки. Причем на сайте у автора плагина все работает превосходно. Сначала выяснилось, что автор использовал более раннюю версию jQuery. После экспериментов с разными версиями jQuery и плагинов, стало понятно, что дело вовсе не в карусельке, а в стороннем плагине jquery.mousewheel.js, который как раз и отслеживает вращение колесика. Именно он почему-то не хотел работать на jQuery 1.7.

Поиски актуальной версии mousewheel ни к чему не привели. Plugins.jquery.com сказал, что сайт плагина в разработке. Ветка на гитхабе https://github.com/brandonaaron/jquery-mousewheel/issues/22, где сообщается о проблеме, тоже не помогла.

Пришлось расковырять плагин, немного подебажить, и вот что получилось.
Переменная вида event.wheelDelta в jQuery 1.7 стала undefined. Везде, где она определяется, нужно заменить на event.originalEvent.wheelDelta.
Все заработало и с поправленным плагином jquery.mousewheel версии 3.0.4 и версии 3.0.2

Попутно выяснилось, что автоматически наладилась работа плагина fancybox, который также использует mousewheel.

На всякий случай выкладываю файлы
jquery.mousewheel Version: 3.0.2
jquery.mousewheel Version: 3.0.4

16.03.2012 Автор: Ссылка
12 комментариев на Чиним jquery.mousewheel
  1. Спасибо огромное! Уже собирался менять на сайте версию jquery с последней на 1.6. Но ваш пост меня выручил -)

  2. Albina:

    приятно, что еще кому-то пригодилось :)

  3. Aldridge:

    Очень кстати! Благодарю за подсказку ;)

  4. Михаил:

    Спасибо :) Сам уже нашел проблему, но не знал как ее исправить, оказалось, нужно слегка погуглить :)

  5. Al-lex:

    Большое спасибо!!! Ни в какую не прокручивался стилизованный скролл, какие только плагины не применялись для его оформления! А благодаря вашей записи наконец получилось наладить

  6. Snick:

    Бро, ты сократил часы моего времени и спас проект! Храни тебя все божества этого мира! Добра тебе!)

  7. Sht1rlitz:

    Огромное спасибо!

  8. Artem:

    У меня в одном из проектов это решило проблему, а в другом нет. Спасла ситуацию скачка последней версии mousewheel’а отсюда:
    https://github.com/brandonaaron/jquery-mousewheel/blob/master/jquery.mousewheel.js
    Однако теперь та же проблема с TouchSwipe…

  9. И от меня тоже — спасибо.
    Избавили от нудного ковыряния чужого кода…

  10. Endimeon:

    Очень помогло, спасибо. Для людей, которые на «Вы» с JavaScript вообще и jQuery в частности — просто палочка-выручалочка.

  11. Виталий:

    Спасибо огромное! Полезная заметка.

  12. Ivan:

    Спасибо за подсказку насчет originalEvent. Пришлось поломать голову над вычислением wheelDelta.