touchmove 长按_ontouchstart 事件如何定义?长按事件呢?

function noClickDelay(el) {

this.element = typeof el == 'object' ? el: document.getElementById(el);

if (window.Touch)  this.element.addEventListener('touchstart', this, false);

}

NoClickDelay.prototype = {

handleEvent: function(e) {

switch (e.type) {

case 'touchstart':

this.onTouchStart(e);

break;

case 'touchmove':

this.onTouchMove(e);

break;

case 'touchend':

this.onTouchEnd(e);

break;

}

},

onTouchStart: function(e) {

e.preventDefault(); this.moved = false;

this.theTarget = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);

if (this.theTarget.nodeType == 3) this.theTarget = theTarget.parentNode;

this.theTarget.className += ' pressed';

this.element.addEventListener('touchmove', this, false);

this.element.addEventListener('touchend', this, false);

},

onTouchMove: function(e) {

this.moved = true;

this.theTarget.className = this.theTarget.className.replace(/ ?pressed/gi, '');

},

onTouchEnd: function(e) {

this.element.removeEventListener('touchmove', this, false);

this.element.removeEventListener('touchend', this, false);

if (!this.moved && this.theTarget) {

this.theTarget.className = this.theTarget.className.replace(/ ?pressed/gi, '');

var theEvent = document.createEvent('MouseEvents');

theEvent.initEvent('click', true, true);

this.theTarget.dispatchEvent(theEvent);

}

this.theTarget = undefined;

}

};

//使用

noClickDelay(document.getElementById('element'));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值