2015-05-13 2 views
0

Когда я использую hammer.js для распознавания жестов для элемента, я ожидаю, что жесты будут распознаны только для этого элемента, а не из элементов внутри него. В этом примере jsfiddle я установил горизонтальную панораму для внешнего красного элемента. Но когда я перетаскиваю внутри внутреннего, синего элемента, жесты по-прежнему распознаются. Мне нужен только внешний элемент, чтобы распознать жест. Есть ли способ закодировать это?Как использовать молот без внутренних элементов Генерация событий

https://jsfiddle.net/axvmsa9k/3/

<div id="red" style="width:200px;height:200px;background:red;"> 
    <div id="blue" style="width:100px;height:100px;background:blue;"></div> 
</div> 
<h1>Click and drag in red or blue element to see events happen.</h1> 
<h1 id="textout">pan event count = 0</h1> 
var red_el = document.getElementById("red"); 
// create Hammer manager to recognize horizontal pan for the red element 
var mc = new Hammer.Manager(red_el, { 
    preventDefault: true, 
    recognizers: [ 
     [Hammer.Pan, { 
      direction: Hammer.DIRECTION_HORIZONTAL 
     }] 
    ] 
}); 

// set manager to call handlePan 
mc.on('pan', handlePan); 

// update the HTML to show that pan events happen when 
var eventCounter = 0; 
function handlePan(ev) { 
    var output_el = document.getElementById("textout"); 
    eventCounter++; 
    output_el.innerHTML = "pan event count = "+eventCounter; 
} 

ответ

0

Я исправил проблему с помощью stopPropogation() для внутренних элементов, которые обрабатывают MouseDown событий и с помощью CSS указатель события: нет свойства для других внутренних элементов.