Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не получается снять обработчик (https://javascript.ru/forum/events/63296-ne-poluchaetsya-snyat-obrabotchik.html)

sash003 29.05.2016 18:58

Не получается снять обработчик
 
Всем привет. Решил вот попробовать свои силы и написать jQuery-плагин для открытия картинок в модальном окне.
Проблема как всегда возникла на самом последнем этапе: захотел сделать чтобы при прокрутке колесом мыши менялись картинки. Сделал, но вместе с картинками прокручивается и вся страница за модальным окном.. Пробую навешивать и снимать обработчики при закрытии, не получается снять. Подскажите, пожалуйста
// вешаю
$(window).on('DOMMouseScroll mousewheel', function(e){
        imgOnScroll(e);
});
// пытаюсь снять 
$(window).off('DOMMouseScroll mousewheel', function(e){
        imgOnScroll(e);
});   

var imgOnScroll = function(e){
            window.preventdefault(e);
            var evt = e.originalEvent ? e.originalEvent : e,
            delta = evt.detail ? evt.detail*(-40) : evt.wheelDelta
// и т.д...

DynkanMaclaud 29.05.2016 19:22

sash003,
// вешаю
$(window).on('DOMMouseScroll mousewheel', function(e){
        imgOnScroll(e);
});
// пытаюсь снять 
$(window).off('DOMMouseScroll mousewheel', imgOnScroll);   

var imgOnScroll = function(e){
            window.preventdefault(e);
            var evt = e.originalEvent ? e.originalEvent : e,
            delta = evt.detail ? evt.detail*(-40) : evt.wheelDelta
// и т.д...

sash003 29.05.2016 19:41

А включаешь - не работает :) :help:

DynkanMaclaud 29.05.2016 19:44

sash003,
весь код в студию!

рони 29.05.2016 19:45

Цитата:

Сообщение от sash003
window.preventdefault

:blink:

sash003 30.05.2016 14:27

Вложений: 1
Дааа... Там фуннция написана за пределами замыкания, вот я и подумал, что нужно так писать.. Я такое дно :)
function preventdefault(e){
    e = e || window.event;
    if(e.preventDefault) e.preventDefault();
    else e.returnValue  = false;
    
}

А всё было так просто.. Зачем вешать событие на всю бодью если
el = document.querySelector('.popopenDiv');

Но всё равно прокрутка не работает как надо. Если вешаю попап на один див, всё чудесно, а если на два, то прокручиваются только несколько картинок иногда. Буду очень благодарен, если посмотрите на код. Прошу не ржать в голос :haha:


Часовой пояс GMT +3, время: 20:56.