如何使用纯JS捕获用户的“tap”事件?不幸的是,我无法使用任何库。
答案 0 :(得分:29)
只需点击鼠标即可触发click
事件。
触摸屏幕时会触发touchstart
事件。
触摸结束时会触发touchend
事件。如果阻止默认操作,则不会触发click
事件。
答案 1 :(得分:6)
这不是我的代码,但我不记得从哪里获得它,成功使用。它使用jQuery但没有额外的库或插件来处理自己。
$.event.special.tap = {
setup: function(data, namespaces) {
var $elem = $(this);
$elem.bind('touchstart', $.event.special.tap.handler)
.bind('touchmove', $.event.special.tap.handler)
.bind('touchend', $.event.special.tap.handler);
},
teardown: function(namespaces) {
var $elem = $(this);
$elem.unbind('touchstart', $.event.special.tap.handler)
.unbind('touchmove', $.event.special.tap.handler)
.unbind('touchend', $.event.special.tap.handler);
},
handler: function(event) {
event.preventDefault();
var $elem = $(this);
$elem.data(event.type, 1);
if (event.type === 'touchend' && !$elem.data('touchmove')) {
event.type = 'tap';
$.event.handle.apply(this, arguments);
} else if ($elem.data('touchend')) {
$elem.removeData('touchstart touchmove touchend');
}
}
};
$('.thumb img').bind('tap', function() {
//bind tap event to an img tag with the class thumb
}
我将此用于专门用于iPad的项目,因此可能需要调整以适用于桌面和平板电脑。
答案 2 :(得分:5)
有touchstart
,touchend
和其他事件。您可以通过以下方式为它们添加事件侦听器:
var el = document.getElementById('test');
el.addEventListener('touchstart', touchHandler);
有关您可以在MDN webstite上找到的原生DOM事件的更多信息。
答案 3 :(得分:2)
$(element)
.on('touchstart', function () {
$(this).data('moved', '0');
})
.on('touchmove', function () {
$(this).data('moved', '1');
})
.on('touchend', function () {
if($(this).data('moved') == 0){
// HERE YOUR CODE TO EXECUTE ON TAP-EVENT
}
});