为长按创建自定义事件,例如 'click'

Create a custom event like 'click' for longtap

我想制作一个可以像

一样使用的自定义事件
$('.entry').on('click', function().......

我需要它来检测移动设备的长按。我想这样称呼它:

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

我阅读了很多关于创建事件的内容,但大多数方法都是使用绑定和触发器。那么有没有办法做到这一点?

  1. 您可以使用其中一种手工解决方案,前提是here
  2. 您可以将其附加为 third-party script
  3. jQuery 手机有一个特殊的 taphold 活动。

如前所述here ,您不需要为长按创建自定义事件,您只需要 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/

这里是实现长按的方法:

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>