手机端与电脑点击事件不一致

clipboard.png
问题如图所标,在电脑上正常运行的,i输出0,但是在手机上直接输出了2,不知道为啥。
完整代码如下

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
    <style type="text/css">
        ::-webkit-scrollbar {
                width: 0px;
        }
        iframe{
            display: block;
            border:none;
        }
        html,body,.container{
            height: 100%;
            overflow: auto;
        }
        .show{
            display: block;
        }
        .hide{
            display: none;
        }
        iframe{
            height: 98vh;
            width: 100%;
        }
        #next{
            text-align: right;
        }
        .btn{
            padding: 6px 12px;
            color: #4ac6d6;
            background: #fff;
        }
        .grey{
            color: #999;
        }
    </style>
<script>
        
</script>
</head>
<body>
    <div class="container">
        <iframe id="iframe" src="https://www.baidu.com/"></iframe>
        <p class="hit"></p>
        <p id="next"><span class="btn">下一份</span></p>
    </div>
    <script type="text/javascript" src="js/jquery-1.10.1.min.js"></script>
    <script>
        var arr = ['https://www.baidu.com/','https://www.taobao.com/','https://www.baidu.com/','https://www.taobao.com/','https://www.baidu.com/','https://www.taobao.com/','https://www.baidu.com/','https://www.taobao.com/']
        var i=0;
        var len = arr.length,
            iframe = $("#iframe"),
            hit  = $(".hit"),
            btn = $("#next").find(".btn")
        $(".container").on("click","#next",function(){
            iframe.attr("src",arr[i])
            // hit.append(`<span>${i}</span>`)
            hit.html(i)            
            i++
            if(i==len){
                $(this).off("click")
                btn.addClass("grey")
                btn.html("已经是最后一份了")
            }
        })
    </script>
</body>
</html>

阅读 3.1k
3 个回答

你禁止捕获看看 点击击穿了 加个fastclick.js

移动端的click会比PC的click处理慢200毫秒左右,你这个绑定的是动态节点,你把click换成touchstart看看能不能行

建议挂套检测代码,搞个变量,如果是移动端就设置这个变量为"click",如果是pc端就设置为"touchstart",之后挂事件时用这个变量就好。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题