Идентификация элемента, инициированного событием, из массива элементов в Hammer

#jquery #hammer.js

#jquery ( jquery ) #hammer.js

Вопрос:

У меня есть два HTML-раздела, подобных этому:

 <div class="div-class" data-val="1">Div 1</div>
<div class="div-class" data-val="2">Div 2</div> 
<div class="div-class" data-val="2">Div 2</div> 
 

Используя jquery, я могу получить правильное значение data-val, когда я нажимаю на каждый div.

 var el = $('.div-class');
el.on('click', function(){
    alert($(this).data('val'));  //pop up value '1', '2' or '3' based on click
});
 

Но когда я пытаюсь сделать это с помощью Hammer для события doubletap, как показано ниже, он показывает все три значения без правильного определения моего клика.

 var el = $('.div-class');
Hammer(el).on('doubletap', function(){
    alert($(this).data('val')); //all three values are shown
});
 

Как я могу получить только правильное значение на основе события моего клика?
(Не беспокойтесь о разных событиях.)

Ответ №1:

Функция обработчика Hammer передается в event качестве параметра, поэтому вы можете использовать event.target :

 var el = $('.div-class');
Hammer(el).on('doubletap', function(event){
    alert($(event.target).data('val'));
});
 

Дополнительную информацию о свойствах вы можете получить в event разделе «Данные о событиях» документации Hammer.

Комментарии:

1. Но все равно отображаются все три значения. Я думаю, что функция активирована для всех трех элементов в массиве ‘el’.

2. Отображаются ли значения в 3 отдельных предупреждениях или в одном единственном?

3. В этом случае, да, событие вызывается для каждого .div-class элемента в отдельности. Я больше ничем не могу помочь с предоставленным вами кодом, поскольку он должен работать.