创建一个自定义事件,例如“点击”以进行长按

时间:2019-06-27 06:12:03

标签: javascript jquery mouseevent dom-events

我想创建一个自定义事件,可以像

一样使用
$('.entry').on('click', function().......

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

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

我了解了很多有关创建事件的信息,但是大多数方法是使用绑定和触发器。那么有办法吗?

3 个答案:

答案 0 :(得分:1)

这是一种实现长按的方法:

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>

答案 1 :(得分:0)

  1. 您可以使用here提供的一种手工解决方案。
  2. 您可以将其附加为third-party script
  3. jQuery Mobile有一个特殊的taphold事件。

答案 2 :(得分:0)

here 所述,您无需为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/