移动web开发 - 移动web端滚动后立即触发点击事件

查看:125
本文介绍了移动web开发 - 移动web端滚动后立即触发点击事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在页面中滚动完成后便会立刻触发点击事件的跳转,
在此页面使用了 swiper,iscroll,vue
iscroll使用的是iscroll-lite版本

代码如下:

  • html部分


<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

        <!-- UC应用模式 -->
        <meta name="browsermode" content="application">
        <!-- QQ应用模式 -->
           <meta name="x5-page-mode" content="app">
        



        <meta name="viewport" content="initial-scale=1, maximum-scale=3, minimum-scale=1, user-scalable=no">

        <title>首页</title>
        <link rel="stylesheet" href="./public/css/index.css" />
        <link href="https://cdn.bootcss.com/Swiper/3.4.2/css/swiper.min.css" rel="stylesheet">
    </head>

    <body>
        <!-- <script type="text/javascript" src="../alloylever/dist/alloy_lever.js"></script> -->   <!-- 移动浏览器调试工具 -->
        <div id="index_view">
            <header>
                <span class="city" @click="city_link">
                    <img src="./image/address.png" alt="" />
                    <a class="city-name"></a>
                </span>
                <input type="text" placeholder="搜索职位或公司" class="index-search" readonly @click="search_link"/>
            </header>

            <!-- 第一层滑动 -->
            <!-- 最外层的分页器 -->
            <div class="type-pagination">
                <div class="jobType">
                    <!-- 职位分类 -->
                    <span v-for="type in type" v-text="type.name" :id="type.Id"></span>
                </div>
                
                <!-- 定制职位类别 -->
                <div  class="set-type" @click="jobtype_link">
                    +            
                </div>
            </div>

            <div class="swiper-container">

                <div class="swiper-wrapper">
                    <div v-for="n in type.length" class="swiper-slide" :class="'swiper-slide'+n">
                        <div class="slide-scroll">
                            <!-- 下拉刷新 -->
                            <div class="pull-refresh">
                                
                                <img v-if="ajax_status == 1 || ajax_status == 3" :src="ajax_status == 1 ? './public/img/pulldown.png' : (ajax_status == 3 ? './public/img/finish.png' : '') " alt="" />
                                
                                <div class="spinner" v-if="ajax_status == 2">
                                  <div class="spinner-container container1">
                                    <div class="circle1"></div>
                                    <div class="circle2"></div>
                                    <div class="circle3"></div>
                                    <div class="circle4"></div>
                                  </div>
                                  <div class="spinner-container container2">
                                    <div class="circle1"></div>
                                    <div class="circle2"></div>
                                    <div class="circle3"></div>
                                    <div class="circle4"></div>
                                  </div>
                                  <div class="spinner-container container3">
                                    <div class="circle1"></div>
                                    <div class="circle2"></div>
                                    <div class="circle3"></div>
                                    <div class="circle4"></div>
                                  </div>
                                </div>
                                
                                <div class="refresh-status">
                                    <p v-text="ajax_status == 1 ?'下拉刷新' : (ajax_status == 2 ? '正在刷新' : '刷新完成')">下拉刷新</p>
                                    <p v-text="'最后更新' + (new Date().getHours() > 10 ? new Date().getHours() : '0' + new Date().getHours())+':'+ (new Date().getMinutes() > 10 ? new Date().getMinutes() : '0'+new Date().getMinutes())">最后更新 :</p>
                                </div>
                            </div>
                            <!-- 第二层滑动 -->
                            <div class="banner" v-if="banner != null && banner != ''">

                                <div class="banner-wrapper">
                                    <div class="banner-slide" v-for="banner in banner">
                                        <a :href="banner.type == 3 ? '/h5/jobDetails.html?jobId='+banner.data : (banner.type == 4 ? '/h5/company.html?companyId'+banner.data : (banner.type == 2 ? banner.data : ''))"><img :src="banner.banner" alt="" /></a>
                                    </div>
                                </div>
                                <div class="swiper-pagination"></div>
                            </div>

                            <div style="position:relative;" class="select-wrapper">
                                <!-- 条件筛选 -->
                                <div class="select">
                                    <!-- 区域筛选 -->
                                    <span count="true">
                                        <p><a>区域</a> <img src="./image/bottom.png" class="img"></p>
                                        <div class="area option" :class="'area'+n">
                                            <ul>
                                                <li v-for="area in area" v-text="area.name" :areaid="area.Id" @click.stop="set_id('area',area.Id,area.name,$event)"></li>
                                            </ul>
                                        </div>
                                    </span>
    
                                    <!-- 结算方式筛选 -->
                                    <span count="true">
                                        <p><a>结算方式</a> <img src="./image/bottom.png" class="img"></p>
                                        <div class="salaryType option" :class="'salaryType'+n">
                                            <ul>
                                                <li v-for="type in salaryMethods" v-text="type.name" :salaryid="type.Id" @click.stop="set_id('salaryType',type.Id,type.name,$event)"></li>
                                            </ul>
                                        </div>
                                    </span>
    
                                    <!-- 福利筛选 -->
                                    <span count="true">
                                        <p><a>福利</a> <img src="./image/bottom.png" class="img"></p>
                                        
                                        <div class="welfare option" :class="'welfare'+n">
                                            <ul>    
                                                <li v-for="welfare in welfare" v-text="welfare.name"  :welfareid="welfare.Id" @click.stop="set_id('welfare',welfare.Id,welfare.name,$event)"></li>
                                            </ul>
                                        </div>
                                    </span>
    
                                    <!-- 排序方式 -->
                                    <span count="true">
                                        <p><a>排序 </a><img src="./image/bottom.png" class="img"></p>
                                        <div class="sort option" :class="'sort'+n">
                                            <ul>
                                                <li v-for="order in order" v-text="order.name" :orderid="order.Id" @click.stop="set_id('sort',order.Id,order.name,$event)">不限</li>
                                            </ul>
                                        </div>
                                    </span>
    
                                </div>
    
                                <!-- 职位列表  -->
                                <ul class="v-group">
                                
                                    <li v-for="list in list" :jobId="list.jobId" >
                                        <div class="job-logo">
                                            <img :src="list.logoURL">
                                        </div>
                                        <div class="job-content">
                                            <p v-text="list.name"></p>
                                            <p>
                                                <img src="">
                                                <span v-text="list.district"></span>
                                                <span v-text="Math.floor((list.distance/1000)) > 1 ? '( 距我'+(list.distance/1000).toFixed(1)+'km )' : '( 距我'+list.distance+'m )'"></span>
    
                                                <em class="v-pull-right" v-text="list.salary"></em>
                                            </p>
                                            <p>
                                                <img src="">
                                                <span v-text="list.validateTime"></span>
                                                <span class="v-pull-right" v-text="list.billingCycle"></span>
                                            </p>
    
                                            <div>
                                                <p v-if="list.redEnvelope"><img src="./public/img/Red-envelopes.png" alt=""  style="width:0.6rem;"/><span v-text="list.redenvelopTips"></span></p>
                                                <p v-if="list.welfareTips != ''"><img src="./public/img/gongchi.png" alt=""  style="width:0.8rem;"/> <span v-text="list.welfareTips"></span></p>
                                                <p> 
                                                    <img style="width:0.8rem;" :src="list.packageId == 4 ? './public/img/Diamond-business.png' : (list.packageId == 3 ? './public/img/Platinum-Enterprise.png' : (list.packageId == 2 ? './public/img/v.png' : ( list.packageId == 1 ? './public/img/common.png' : './public/img/commonhui.png')))">
                                                    <span v-text="list.customerLevelTips"></span>
                                                </p>
                                            </div>
                                        </div>
                                    </li>
                                    

                                    <!-- 搜索结果为空  -->
                                    <div class="search-null" v-if="list == null || list == '' ">
                                        <div style="width:50%;margin:0rem auto;">
                                            <img src="./image/default_empty_image.png" alt=""/>
                                        </div>
                                        
                                        <p>亲,暂无符合条件的兼职呦</p>
                                        <p>您可以试试其它关键字</p>
                                    </div>
                                    
                                    
                                    
                                    <!-- 加载中动画 -->
                                    <li v-if="list.length >= 3" class="li-loading">
                                        <div class="spinner">
                                          <div class="spinner-container container1">
                                            <div class="circle1"></div>
                                            <div class="circle2"></div>
                                            <div class="circle3"></div>
                                            <div class="circle4"></div>
                                          </div>
                                          <div class="spinner-container container2">
                                            <div class="circle1"></div>
                                            <div class="circle2"></div>
                                            <div class="circle3"></div>
                                            <div class="circle4"></div>
                                          </div>
                                          <div class="spinner-container container3">
                                            <div class="circle1"></div>
                                            <div class="circle2"></div>
                                            <div class="circle3"></div>
                                            <div class="circle4"></div>
                                          </div>
                                        </div>
                                        <span>加载中</span>
                                    </li>
                                </ul>
                                
                                <div class="scroll-layer"></div>
                            </div>
                        </div>

                    </div>

                </div>

            </div>
            <!-- <footer class="footer" @click="download">
                <div>
                    <img src="./image/logo-dibu@2x.png">
                </div>
                <div class="download btn">
                    下载APP
                </div>
            </footer> -->
        </div>
        <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
        <script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
        <script src="https://cdn.bootcss.com/iScroll/5.2.0/iscroll-lite.min.js"></script>
        <script src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
        <script src="https://map.qq.com/api/js?v=2.exp&key=KVTBZ-WD5CG-CCGQB-IME45-74MD5-2FBHU"></script>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=ksrNsHiHVWunv05d9pLKfLhO"></script>
        <!-- <script src="https://cdn.bootcss.com/iScroll/5.2.0/iscroll-probe.min.js"></script> -->
        <script src="https://cdn.bootcss.com/Swiper/3.4.2/js/swiper.min.js"></script>
        <script src="./public/js/index.js"></script>
        <!-- <script src="../dist/index.bundle.js"></script> -->
    </body>

</html>

  • js部分

// 实例化iscroll
 var slideScroll18 = new IScroll('.swiper-slide18',{
      scrollbars: false,
      mouseWheel: true,
      momentum:false,
      bouncTime: 600,
      click: true,
      disablePointer: true,
      disableTouch: false,
      deceleration: 0.000006,
      /*probeType: 2,*/
      scrollbars:true,  
      getScrollW:'4rem',
      snap: 'li',
      fixedScrollbar: false
    })

// 滚动
    slideScroll18.on('scrollEnd', function () {
       
        if(this.directionY == 1 && this.y+$('div.swiper-slide').height() <0){
          view.start_index++;

          view.listAndBanner_ajax();
        } 
        refresh();
      });
      
      slideScroll18.on('scrollStart',function(){
       
        if(this.directionY == -1 && this.y == 0){
          view.start_index = 0;
          view.ajax_status = 1;
          
          setTimeout(function(){
            view.ajax_status = 2;
          },1000)
          
          setTimeout(function(){
            view.listAndBanner_ajax();
          },2000);
        }
        
        // 跳转的事件
        
       jobdetails_link:function(id){ // 跳转工作详情
            window.location.href = '/h5/jobDetails.html?jobId='+id;
      }

解决方案

已经找解决方案,我在元素上绑定了触摸开始和触摸结束两个事件,触摸开始便存储刚点击时的坐标,再触摸结束时增加和触摸开始时坐标的判断,如果不等便不跳转

下面附上打印出来的touch详细内容:

这篇关于移动web开发 - 移动web端滚动后立即触发点击事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆