Этот пост – перевод статьи Брэндона Аарона…
Этот пост – перевод статьи Брэндона Аарона (Brandon Aaron) Special Events, в котором он рассказывает об использовании специальных событий jQuery и приводит пример создания обработчика тройного клика мышкой. jQuery, начиная с версии 1.2.2, имеет API для создания “специальных событий“. Эти события называются специальными, потому что позволяют выполнять некоторые дополнительные действия при их возникновении, а также имеют опцию, позволяющую обходить внутреннею систему событий jQuery. Используя эти специальные события вы можете создавать пользовательские события, которые требуют выполнения каких-то действий перед началом работы (при установке) или должны переопределять поведение встроенных событий. Мы использовали специальные события jQuery для создания событий “mouseenter” и “mouseleave”, а также для создания события “ready” и для нормализации события “mousewheel” в плагине mouse wheel. Специальное событие: “tripleclick” (тройной клик). Для иллюстрации API я собираюсь создать новый тип события под названием “tripleclick” (тройной клик). Это событие будет возникать когда пользователь кликнет по элементу три раза. Если бы мы собирались сделать это событие обычным jQuery плагином мы бы создали jQuery. fn. tripleclick. Но я хочу использовать преимущества синтаксиса bind вместе с другими возможностями, которые предоставляет система событий jQuery, такими как нормализация события, данные и пространства имен. Прежде всего нам необходимо создать специальное событие. Каждое такое событие имеет методы setup и teardown. Метод setup вызывается когда происходит присоединение события (bind), а teardown – когда событие отсоединяется.
Важно отметить, что эти два метода вызываются только при первом присоединении (отсоединении) события определенного типа к определенному элементу. Это происходит потому, что система событий jQuery в действительности присоединяет только один обработчик каждого типа к каждому элементу и сама управляет остальными присоединенными обработчиками. В jQuery 1.3 есть новый тип специального события под названием “Special All”, который работает со всеми обработчиками, но у него немного другое поведение. И эта тема для другой статьи. Основа события “tripleclick” выглядит следующим образом.