自定义tap

2021-08-30  本文已影响0人  浮生弱梦

//自定义tap
$(document).on("touchstart", function(e) {
    if(!$(e.target).hasClass("disable")) $(e.target).data("isMoved", 0);
});
$(document).on("touchmove", function(e) {
    if(!$(e.target).hasClass("disable")) $(e.target).data("isMoved", 1);
});
$(document).on("touchend", function(e) {
    if(!$(e.target).hasClass("disable") && $(e.target).data("isMoved") == 0) $(e.target).trigger("tap");
});
<!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
            content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <title>Title</title>
        <style>
            body {
                margin: 0;
                padding: 0;
            }

            .box {
                width: 200px;
                height: 200px;
                background: pink;
                float: left;
            }
        </style>
    </head>

    <body>
        <div class="box"></div>

        <script>
            window.onload = function () {
                /*使用tap事件*/
                /*1. 响应的速度比click要快   150ms */
                /*2. 不能滑动*/
                // 封装tap事件
                var bindTapEvent = function (dom, callback) {
                    /*事件的执行顺序*/
                    /*在谷歌浏览器模拟看不到300ms的效果*/
                    /*在真机上面才能看看到延时效果*/
                    var startTime = 0;
                    var isMove = false;
                    dom.addEventListener('touchstart', function () {
                        startTime = Date.now();
                    });
                    dom.addEventListener('touchmove', function () {
                        isMove = true;
                    });
                    dom.addEventListener('touchend', function (e) {
                        console.log((Date.now() - startTime));
                        if ((Date.now() - startTime) < 150 && !isMove) {
                            callback && callback.call(this, e);
                        }
                        // 重置参数
                        startTime = 0;
                        isMove = false;
                    });
                }

                bindTapEvent(document.querySelector('.box'), function (e) {
                    console.log(this);
                    console.log(e);
                    console.log('tap事件')
                });
            }
        </script>
    </body>

    </html>
上一篇下一篇

猜你喜欢

热点阅读