Создайте пользовательское событие, такое как «click» для longtap - PullRequest
0 голосов
/ 27 июня 2019

Я хочу создать пользовательское событие, которое я могу использовать, например

$('.entry').on('click', function().......

. Оно мне нужно для обнаружения длинного касания для мобильных устройств.Я хочу назвать это так:

$('.entry').on('longtap', function().......

Я много читал о создании событий, но большинство из них с привязкой и триггером.Так есть ли способ сделать это?

Ответы [ 3 ]

1 голос
/ 27 июня 2019

Вот способ реализовать длинный тап:

var clickStart;

document.getElementById("cool_button").addEventListener('mousedown', function() {
  console.log('mouse down');
  this.clickStart = new Date().getTime();
});

document.getElementById("cool_button").addEventListener('mouseup', function() {
  console.log('mouse up');
  if ((new Date().getTime() - this.clickStart) >= 1000) {
    console.log('this is a long tap');
  }
});
<button id="cool_button">i'm a long tap button</button>
0 голосов
/ 27 июня 2019

Как сказано здесь , вам не нужно создавать пользовательское событие для longtap, вам нужен только таймер js и два уже ожидающих события, таких как mouseup, mousedown:

var pressTimer;

$(".entry").mouseup(function(){
  clearTimeout(pressTimer);
  // Clear timeout
  return false;
}).mousedown(function(){
  // Set timeout
  pressTimer = window.setTimeout(function() {
  console.log("hi!")
  },1000);
  return false; 
});

Я сделал для тебя пример

https://jsfiddle.net/sOoN92/74rbc2ph/

0 голосов
/ 27 июня 2019
  1. Вы можете использовать одно из решений ручной работы, при условии здесь .
  2. Вы можете прикрепить его как сторонний скрипт .
  3. Для jQuery Mobile существует специальное событие taphold .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...