Снова вернуть обработчик, on(), off()
Привет!
Не могу сообразить, как придумать краткое решение проблемы. Суть: есть элемент, на него повешен обработчик, который должен работать с самого начала. По клику на .n1 должно произойти единожды событие mouseenter, и обработчик надо снять. Обработчик возвращается вновь, по клику на .n2. Грубая модель ситуации: Есть переключатель, который включает или выключает анимацию на сайте. Если анимация отключается, то все занимает "отработанное" положение. Если тут же ее включают, все возвращается к исходным положениям. Думал над решениями, но какие-то длинные, хочу лаконично. Фрагмент кода $(".cblocks").on({ mouseenter: function() { // код... }, mouseleave: function () { //еще код... } }); $(".n1").click(function() { $(".cblocks").trigger("mouseenter"); $(".cblocks").off(); }); $(".n2").click(function() { $(".cblocks").trigger("mouseleave"); //как вернуть ? :( }); С событиями работаю первый раз, поэтому возникают трудности. Спасибо (: |
Цитата:
|
Цитата:
Я может запутал словом "единожды". Имел ввиду что при клике на .n1 (отключение анимации) элементы выполнять действия как в mouseenter, и застынут. И не будут обрабатывать ни маусэнтер ни мауслив. Но как только клик на .n2 (включение анимации) - все работает снова. |
Deliaz,
Тады on и unbind http://jquery-docs.ru/Events/unbind/#typefn (Для старых версий ниже 1.7.2 был еще и bind - установщик в новой всё ставицо через on |
Цитата:
$(".cblocks").on({mouseenter:ShowIt,mouseleave:HideIt}); $(".n1").click(function() { $(".cblocks").trigger("mouseenter"); $(".cblocks").off(); }); $(".n2").click(function() { $(".cblocks").on({mouseenter:ShowIt,mouseleave:HideIt}); $(".cblocks").trigger("mouseleave"); }); Функции ессно описаны. Это действительно оптимальный код? А то концентрация индусских решений у меня уже превышена, стоит бы оптимизировать.. |
Часовой пояс GMT +3, время: 15:47. |