如何绑定touchstart和click事件,但不响应这两个事件

要绑定touchstartclick事件,但不响应这两个事件,可以通过以下步骤:

  1. 安装fastclick库,可以通过npm i fastclick命令进行安装;

  2. 在需要绑定touchstartclick事件的页面或组件中引入fastclick

<script src="path/to/fastclick.js"></script>

或者在组件中使用import引入:

import FastClick from 'fastclick';
  1. 在页面加载完成后对document进行绑定:
if ('addEventListener' in document) {
    document.addEventListener('DOMContentLoaded', function() {
        FastClick.attach(document.body);
    }, false);
}

这样,touchstartclick事件就会被fastclick监听并阻止默认行为,从而部分的解决了移动端点击延迟的问题。

如果想更加彻底的禁止touchstartclick事件的默认行为,可以在将fastclick库引入后,在相应的元素上进行样式覆盖,即:

/* 禁用默认 tap/highlighted 状态 */
a, button, input, select, textarea {
    -webkit-tap-highlight-color: rgba(0,0,0,0);
    -webkit-tap-highlight-color: transparent;
    tap-highlight-color: rgba(0,0,0,0);
    tap-highlight-color: transparent;
}
/* 禁用 tap 内容滚动 */
* {
    touch-action: manipulation;
}

这样,就可以完全禁止touchstartclick事件的默认行为,确保没有任何响应。

示例一:

在以下代码中绑定touchstartclick事件:

const button = document.querySelector('.button');
button.addEventListener('touchstart', function() {
    console.log('touchstart');
});
button.addEventListener('click', function() {
    console.log('click');
});

使用fastclick处理:

if ('addEventListener' in document) {
    document.addEventListener('DOMContentLoaded', function() {
        FastClick.attach(document.body);
    }, false);
}

示例二:

在以下代码中绑定touchstart事件:

const button = document.querySelector('.button');
button.addEventListener('touchstart', function() {
    console.log('touchstart');
});

使用样式禁止默认行为:

/* 禁用默认 tap/highlighted 状态 */
.button {
    -webkit-tap-highlight-color: rgba(0,0,0,0);
    -webkit-tap-highlight-color: transparent;
    tap-highlight-color: rgba(0,0,0,0);
    tap-highlight-color: transparent;
}
/* 禁用 tap 内容滚动 */
* {
    touch-action: manipulation;
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何绑定touchstart和click事件,但不响应这两个事件 - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • jQWidgets jqxProgressBar destroy()方法

    以下是关于 jQWidgets jqxProgressBar 组件中 destroy() 方法的详细攻略。 jQWidgets jqxProgressBar destroy() 方法 jQWidgets jqxProgressBar 组件的 destroy() 方法用于销毁进度条组件及其相关资源。 语法 $(‘#progressbar’).jqxProgre…

    jquery 2023年5月12日
    00
  • jquery引入外部CDN 加载失败则引入本地jq库

    以下是“jquery引入外部CDN 加载失败则引入本地jq库”的完整攻略,包括两条示例说明。 步骤一:引入CDN 首先,在HTML的head标签中引入jquery的CDN链接。例如: <head> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.…

    jquery 2023年5月27日
    00
  • 如何在jQuery中触发窗口尺寸调整事件

    首先,我们需要了解的是,jQuery中触发窗口尺寸调整事件的方式主要有两种,分别是: 使用jQuery的resize()方法来监听窗口尺寸的变化。 使用原生的JavaScript方式监听窗口尺寸的变化,然后再通过jQuery触发事件。 下面,我们将分别详细介绍这两种方式的使用方法。 方式一:使用jQuery的resize()方法监听尺寸变化 首先,我们需要使…

    jquery 2023年5月12日
    00
  • EasyUI jQuery日历小部件

    EasyUI jQuery日历小部件的完整攻略 什么是EasyUI jQuery日历小部件? EasyUI jQuery日历小部件是一个基于jQuery和EasyUI的简单易用的日历组件,用于显示单个日期或者日期区间,可以快速帮助用户选择日期。 如何使用EasyUI jQuery日历小部件? 1. 引入必要的资源文件 首先,我们需要在HTML文件中引入必要的…

    jquery 2023年5月13日
    00
  • jQWidgets jqxListBox bindingComplete事件

    jQWidgets jqxListBox bindingComplete事件详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxListBox是其中一,本文将详细介绍jqxListBox的bindingComplete事件,包括定义、语法和示例。 bindingComplete事件定义 jqxListBox的bindi…

    jquery 2023年5月10日
    00
  • 利用jquery包将字符串生成二维码图片

    要使用jQuery来生成二维码图片,需要依赖于一个叫做”qrcode”的jQuery插件。 下面是详细步骤: 步骤1:引入jQuery和qrcode插件 在HTML页面的标签内引入jQuery和qrcode插件的JS文件。如下: <script src="https://code.jquery.com/jquery-3.5.1.min.js&…

    jquery 2023年5月28日
    00
  • jQuery对象[0]是什么含义?

    jQuery对象[0]的含义是将一个JQuery集合中的第一个元素转换为原生DOM元素。 一般情况下,我们可以使用.get(index)方法获取集合中指定的元素,例如: let $elements = $(‘.example’); // 获取所有class为example的元素 let firstElement = $elements.get(0); // …

    jquery 2023年5月28日
    00
  • jQWidgets jqxKanban宽度属性

    jQWidgets jqxKanban宽度属性攻略 jQWidgets 是一个基于 jQuery 的 UI 组件库,提供了丰富的 UI 组件和工具,可于创建现代化 Web 应用程序。 jqxKanban 是看板组件,用于可视化管理任务和流程。攻略将详细介绍 jqxKanban 的宽度属性,该属性用于设置看板的宽度。 宽度属性 jqxKanban 组件的宽度属…

    jquery 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部