Снова вернуть обработчик, 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, время: 23:11. |