モバイル端末で最も推奨される書き込み方法は、クリック イベントの代わりに zepto のタップ イベントを使用することですが、その理由は一般に、クリック イベントには伝説的な 300ms の遅延があるためです。
###試験結果###クリックとタップのトリガー遅延はわずか約 100ms
###デモ### リーリー ###出力### リーリー関連する質問
一部のブログ記事では、親がタップを使用し、サブセットがクリックを使用すると述べています。デモのトリガー時間を確認すると、これが起こる可能性は低いです。
その主な理由は、同じビジネス ロジックでクリックとタップを同時に使用する愚か者がいるからでしょうか?
つまり、基本的にキャプチャフェーズは主にイベントを同時にトリガーするために使用されるように感じます。しかし、問題もあります。Zepto のイベント メカニズムはイベント バブリングに基づいており、touch.js のイベントはドキュメントにバインドされています。
都用tap 或者引入fastclick.js
建议引用
fastclick.js
,可以解决click
事件会有300毫秒的延迟官网 https://github.com/ftlabs/fas...
zepto的tap事件也只是模拟,而且效率也一般,自然没有原生的click响应快。如果是比较简单的需求(比如只需要响应“点击”事件),可以考虑用fastclick,好处是原有的click事件处理不用改,且可以同时适配pc端和移动端。但如果只是移动端需求,那直接用原生的touchstart事件就可以了。
另外还有一种解决思路是直接上手势库,比如Hammerjs或者腾讯的AlloyFinger之类的,适合有比较复杂的手势需求的场景。
为啥不考虑下touchstart
纠正一下你的点透事件的原因哦,不是因为冒泡机制,而是因为点击事件的延迟。
比如,点击关闭按钮,touchend首先触发tap,弹出层和遮罩就被隐藏了。touchend后继续等待300ms发现没有其他行为了,则继续触发click,由于这时弹出层已经消失,所以当前click事件的target就在底层元素上,于是就触发了底层事件内容。整个事件触发过程为 touchend -> tap -> click。