• 移动端点击问题


    IOS safari 点击失效详解

    出现情况: 使用 zepto 或 jQuery 的情况下,给一个元素添加click事件,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件在IOS safari中会失效。

    案例如下:

    <!DOCTYPE html>
    <html>
    <head>
        <title>ios click test</title>
    </head>
    <body>
        <div id="main">
            <div id="text">test test</br>test test</br>test test</br></div>
            <a id="link">this is a link</a>
            <button id="btn">hello world</button>
            <input type="text" name="name" id="name" placeholder="click input"/>
        </div>
        <script type="text/javascript" src="./deps/zepto.js"></script>
        <script type="text/javascript">
            $(document).on('click', '#text', function() {
                alert('text');      //IOS中点击失效
            }).on('click', '#link', function() {
                alert('link');      //IOS中点击有效
            }).on('click', '#btn', function() {
                alert('btn');      //IOS中点击有效
            }).on('click', '#name', function() {
                alert('input');    //IOS中点击有效
            });
        </script>
    </body>
    </html>

    解决方案

    1. 将 click 事件直接绑定到目标​元素(​​即 target)上。
    2. 将目标​元素换成 &lt; a> 或者 button 等可点击的元素。
    3. 将 click 事件委托到非 document 或 body 的父级元素上。
    4. 给目标元素加一条样式规则 cursor: pointer
    5. 使用原生方式委托事件。

    touchstart事件阻止默认事件会导致click不响应

    案例如下:

    有父子两个元素,父元素Father,子元素Child。

    Vue中为子元素绑定了click事件,但是在ipad上从来没有进入其处理函数。

    父元素通过addEventListener绑定事件

    document.getElementById('Father').addEventListener('touchstart', handleFather);

    子元素通过Vue的@click绑定

    <div id="Child" @click="handleChild">

    每次点击首先响应父元素的事件(事件顺序以及click延时导致),进入handleFather处理函数,函数中设置了e.preventDefault()。那么将导致后面的click事件不会触发。

  • 相关阅读:
    1697 ⑨要写信
    1220 数字三角形
    4979 数塔
    bzoj1618[Usaco2008 Nov]Buying Hay 购买干草
    bzoj1066[SCOI2007]蜥蜴
    bzoj1008[HNOI2008]越狱
    cf437D The Child and Zoo
    cf437C The Child and Toy
    cf437B The Child and Set
    cf437A The Child and Homework
  • 原文地址:https://www.cnblogs.com/chuaWeb/p/mobile-click.html
Copyright © 2020-2023  润新知