2015-09-28 5 views
1

Я немного запутался о том, как правильно удалить прослушиватель событий в Hammer.js 2,0Как удалить прослушиватель событий в Hammer.js 2.0 и связать распознаватель к новой функции

Следуя советам в этой question я, кажется, просто нужно использовать

mc.off(eventString, functionEvent);

Однако я не могу показаться, чтобы получить эту работу, когда у меня есть 2 функции, которые мне нужно позвонить с тем же распознаватель. Мой пример: мне нужен кто-то, чтобы панорамировать, тогда мне нужно удалить этого слушателя и послушать другой панораму.

Как вы можете видеть в моем упрощенном codepen example Я пытаюсь вызвать mc.off в первой функции, а затем настроить следующее событие, но оно работает одновременно.

Так что я хочу в моем примере это первый panleft для запуска первой функции, то второй panleft, чтобы вызвать новую функцию

var myElement = document.getElementById('myElement'); 

var mc = new Hammer(myElement); 

mc.on("panleft", function(ev) { 
    selectFirst('first') 
}); 

function selectFirst (text) { 
    myElement.textContent = text; 
    mc.off('panleft', selectFirst); 

    mc.on("panleft", function(ev) { 
     selectSecond('second') 
    }); 
} 

function selectSecond (text) { 
    myElement.textContent = text; 
} 

ответ

1

Как указано в question я связан выше, и его jsfiddle

Как уже упоминалось в этом ответе, вы можете исправить проблему, не используя анонимную функцию.

hammertime.on("touch", callback);

Однако это не похоже, чтобы исправить мою проблему в попытке удалить исходную функцию и связываются с новым с тем же распознаватель.

Я закончил тем, что просто добавил новый элемент и привязал его ко второй функции. Я предлагаю то же самое, что и вы, вероятно, должны иметь только 1 panleft событие для элемента, и если ему нужно что-то сделать, просто добавьте еще один элемент молотка с panleft на него.