#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
элемента в отдельности. Я больше ничем не могу помочь с предоставленным вами кодом, поскольку он должен работать.