2015-10-29 5 views
1

Я использую hammer.js 2.0Как я могу запустить hammer.js fire fire для родительского элемента, но не общего дочернего элемента?

У меня есть контейнер, который должен иметь события салфетки. Однако в этом контейнере есть элемент, который представляет собой карусель, который содержит свои собственные вентиляционные отверстия. Как я могу провести этот огненный огонь во всем мире , но карусель?

var self = this, 
    hammerContainer = document.querySelector('section.content-wrapper'), 
    carousel = document.querySelector('.image-gallery-carousel'), 
    hammerOpts = { 
     threshold: 4, 
     velocity: .3 
    }, 
    hammer = new Hammer(hammerContainer, hammerOpts); 

Hammer.off(carousel, 'swipeleft swiperight', function() { 
}); 

hammer.on('swipeleft', function (e) { 
// do some other things 
}); 

Метод .off, кажется, не работает на моей карусели. События Хаммера все еще распространяются? ¿Кипящий?

Не нужно стрелять по только карусели, но у всех детей это может быть тоже.

ответ

1

Единственный способ, которым я нашел работу, заключался в привлечении jQuery. Я не чувствую себя лучше.

  1. захватить event.target
  2. метод Использовать JQuery в .parents(), чтобы захватить все родители моей цели, которая была бы данной ClassName
  3. Используйте if заявление, чтобы проверить длину этих родителей, а если длина 0 , выполнить мою салфетку
  4. Используйте селектор атрибута для проверки всех экземпляров и вариаций слова карусели как имя класса, например: [class*="carousel"]

    var self = this, 
        hammerContainer = document.querySelector('section.content-wrapper'), 
        hammerOpts = { 
        threshold: 4, 
        velocity: .3 
        }, 
        hammer = new Hammer(hammerContainer, hammerOpts); 
    
        hammer.on('swiperight', function (e) { 
        if (!$(e.target).parents('[class*="carousel"]').length) { 
        //do swipey things 
        } 
        }); 
    

Я чувствую, что распространение событий должно быть тем, что я мог бы сделать. Например, вызывая e.stopPropagation().

Кто-то, Любой, пожалуйста, покажите мне лучший способ.

 Смежные вопросы

  • Нет связанных вопросов^_^