- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的 React 应用程序中有一个 div,我需要处理点击和触摸。但是,当我点击手机时,它会触发这两个事件。
如果我在移动设备上滑动或点击普通浏览器,它工作正常,在每种情况下只触发一个事件。
如何处理这个点击问题而不触发这两个事件?
<div
className={myClasses}
onClick={this.myHandle}
onTouchStart={this.myHandle}
>
</div>
最佳答案
有一个定义的事件触发顺序(source):
touchstart
Zero or more touchmove events, depending on movement of the finger(s)
touchend
mousemove
mousedown
mouseup
click
如果你想阻止 click
事件,如果之前触发了触摸事件,你可以在 touchend< 中使用
event handler以防止触发 event.preventDefault()
/click
事件。
function App() {
const handleClick = () => {
alert('click');
};
const handleTouchEnd = (event) => {
alert('touchend');
event.preventDefault();
};
return (
<button
type="button"
onClick={handleClick}
onTouchEnd={handleTouchEnd}
>
Click Me
</button>
);
}
然而,这并不是普遍适用的。例如,您不能 prevent click
事件,方法是在 mousedown
事件中使用 event.preventDefault()
。如果您正在寻找解决方案(虽然不确定此用例何时适用),您将不得不使用 ref相反:
function App() {
const prevent = React.useRef(false);
const handleClick = () => {
if (!prevent.current) {
alert('click');
} else {
prevent.current = false;
}
};
const handleMouseDown = () => {
prevent.current = true;
alert('mousedown');
};
return (
<button
type="button"
onClick={handleClick}
onMouseDown={handleMouseDown}
>
Click Me
</button>
);
}
关于javascript - React onClick 和 onTouchStart 同时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612379/
我想用 JavaScript 在触摸设备上复制悬停效果。我创建了 2 个事件 ontouchstart 和 ontouchend,但由于某种原因它不起作用,我收到控制台错误。 错误:未捕获的 DOME
我有一个固定宽度为 200px x 250px 的 div。我可以使用 javascript(在鼠标按下时)使 div 内容很好地滚动,在桌面浏览器中没有问题,但我需要能够让 div 滚动到我的 ip
我正在为平板电脑/智能手机构建带有滑动功能的图片库。我在 iPad 上得到了非常奇怪的结果,所以我决定一直跟踪它回到开始,并在不同事件发生时打印出来。 以下代码本应在我用手指完成滑动后发出类似“sta
我想根据 iPad 上项目的触摸来隐藏元素。以下链接显示 - https://developer.apple.com/library/archive/documentation/AppleApplic
我目前正在使用 Electron 开发 Web 应用程序。如果我在普通的 Chrome 浏览器中打开该应用程序,它会按预期工作:点击为点击,触摸为触摸。 但是如果我用 electron 打包它,它就不
我有一个带有 -webkit-overflow-scrolling:touch 的 div,里面有一个项目列表。 我正在使用 Angular ngTouch,它将我所有的 ng-clicks 处理为
目前,为了检测触摸屏设备,我在我的 javascript 中使用它: if ('createTouch' in document) { // do touchscreen-specific stuff
我的移动 View 触发了一个 ontouchstart 事件,它链接到这个: function mobileLinksShow() { document.querySelector('.mo
我正在尝试让 ontouchstart 适用于 Windows 平板电脑。如果检测到,它会禁用链接的顶层,以便单击事件允许菜单保持打开状态(而不是悬停效果)。 以下代码适用于其他触摸设备,因此我不确定
我有一个 jQuery 移动列表。我想让列表元素在用户触摸时突出显示。我尝试使用以下方法实现: $("#id").bind('touchstart tap', function () { $(
基本上,我有一个写有 :active 的 CSS 按钮,但每次我点击手机上的按钮时,在切换到 Activity 阶段之前会有延迟。 CSS: .btn {...} .btn:active{...} 然
我正在编写一个主要针对 iOS Safari 的网站,但我也希望它能够响应普通桌面。 所以我需要让一个按钮在桌面上对 onmousedown onmouseup 事件使用react,并让一个按钮在 i
我正在尝试编写将在浏览器中或作为 phonegap 应用程序运行的代码。我需要做的一件事是确定我是否处于支持触摸事件的环境中。 我当前的问题是我的 Chrome (20.0.01132.47 m) 为
我有一个具有悬停效果的按钮。但是我想禁用 ipad 和 iphone 中的悬停。它不工作 $(document).ready(function () { $(".content
我目前对每个要更改触摸类的元素使用以下内容: ontouchstart="$(this).addClass('select');" ontouchend="$(this).removeClass('s
我的 React 应用程序中有一个 div,我需要处理点击和触摸。但是,当我点击手机时,它会触发这两个事件。 如果我在移动设备上滑动或点击普通浏览器,它工作正常,在每种情况下只触发一个事件。 如何处理
当我构建一个项目时,我发现当我使用 onClick 双击该组件时,该组件按照我预期的方式工作。但是当我将 onClick 更改为 onTouchStart 时,它开始按照我的预期工作。 但是我有点担心
当我构建一个项目时,我发现当我使用 onClick 双击该组件时,该组件按照我预期的方式工作。但是当我将 onClick 更改为 onTouchStart 时,它开始按照我的预期工作。 但是我有点担心
我正在重构别人写的一些代码。有一个函数使用: !!('ontouchstart' in window) 我在其他项目中看到过这个:https://github.com/Modernizr/Modern
我正在使用 React Native 开发一个应用程序,它必须尽快响应点击手势,因为一秒钟内可以触发多个点击事件。不需要双击或移动手势,但需要注意同时点击。我一直在测试 onTouchStart 和
我是一名优秀的程序员,十分优秀!