基于JS实现移动端左滑删除功能


Posted in Javascript onJuly 28, 2017

废话不多说了,直接给大家贴代码了,具体代码如下所示:

<div class="wrap pay-wrap" id="lists">
    @foreach (var item in Model)
    {
      <div class="pay-list" style="height:90px;margin: 10px 15px 10px 15px;" id="@item.UID">
        <div class="pay-each" style="height:90px;margin-bottom:0; border-radius: 5px;">
          <div class="pay-order-teacher" style="background-image:url(@item.DiseaseInformation.ListPicPath);height:70px;border-radius:0" onclick="Turn('@item.DiseaseInfoID')"></div><div class="detaildiv" style="padding:0;padding-top:10px" onclick="Turn('@item.DiseaseInfoID')">
            @(item.DiseaseInformation.Title.GetSubstr(60))
          </div>
          <div style="height:20px;margin-right:10px;line-height:20px;vertical-align:middle" onclick="Turn('@item.DiseaseInfoID')">
            <span style="float:left;color: #808080;line-height:2;vertical-align:bottom;width:70%">来源:@(item.DiseaseInformation.Source)</span>
            <span style="float:left;color: #808080;line-height:2;vertical-align:bottom;width:30%"><img src="~/Content/img/yueduliang.png" style="height:20px" /> @(item.DiseaseInformation.BrowseNum)</span>
          </div>
          <div class="pay-order-swiper" style="height:90px;margin-left:15px;width:80px"><a href="javascript:;" rel="external nofollow" onclick="del('@item.UID')" class="btn btn-red pay-order-btn pay-order-del" style="height:90px;line-height:90px;width:105px;font-size:18px">删除</a>
          </div>
        </div>
      </div>
    }
  </div>

jquery.productswipe.js代码

/********************
 * 基于jquery模拟移动端列表左右滑动删除
 * author:yaohuitao@100tal.com
 * ******************/
function prevent_default(e) {
  e.preventDefault();
}
function disable_scroll() {
  $(document).on('touchmove', prevent_default);
}
function enable_scroll() {
  $(document).off('touchmove', prevent_default);
}
var mytouch = function (obj) {
  //滑动删除
  var Drags = {};
  Drags.dragtag = false;//拖动状态
  Drags.dragstart = true;//拖动开始标志
  Drags.datatransx = 0;
  $(obj)
    .on('touchstart mousedown', function (e) {
      if (!($(e.target).hasClass("pay-order-swiper") || $(e.target).parents().hasClass("pay-order-swiper"))) {
        closeallswipe();   //点击还原
        if (e.originalEvent.targetTouches) {
          Drags.dragx = e.originalEvent.targetTouches[0].pageX;
          Drags.dragy = e.originalEvent.targetTouches[0].pageY;
        } else {
          Drags.dragx = e.pageX;
          Drags.dragy = e.pageY;
        }
        if ($(e.currentTarget).attr("data-transX")) {
          Drags.datatransx = parseInt($(e.currentTarget).attr("data-transX"));
        }
        Drags.dragtag = true;
        Drags.dragstart = true;
      }
    })
    .on('touchmove mousemove', function (e) {
      if (Drags.dragtag) {
        $(e.currentTarget).removeClass('animatedh');
        $(e.currentTarget).addClass('dragstart');  //添加禁止选择
        var change = 0;
        if (e.originalEvent.targetTouches) {
          change = e.originalEvent.targetTouches[0].pageX - Drags.dragx;
          changey = e.originalEvent.targetTouches[0].pageY - Drags.dragy;
        } else {
          change = e.pageX - Drags.dragx;
          changey = e.pageY - Drags.dragy;
        }
        if (Drags.dragstart) {
          if (Math.abs(changey) < 20) {
            showswiperfbn();
          }
        } else {
          showswiperfbn();
        }
        function showswiperfbn() {
          if (Math.abs(change) > 20) {
            Drags.dragstart = false;
            if (change < -20) {
              change = change + Drags.datatransx + 20;
            } else {
              change = change + Drags.datatransx - 20;
            }
            change = Math.min(Math.max(-300, change), 0);
            $(e.currentTarget).css('transform', 'translate3D(' + change + 'px,0px,0px)');
            $(e.currentTarget).attr("data-transX", change);
            disable_scroll();
          }
        }
      }
    })
    .on('touchend mouseup', function (e) {
      var left = parseInt($(e.currentTarget).attr("data-transX"));
      var new_left;
      if ($(e.currentTarget).hasClass("open")) {
        if (left > -110) {
          new_left = 0;
          $(e.currentTarget).removeClass('open');
        } else {
          new_left = -120;
        }
      } else {
        if (left < -20) {
          new_left = -120;
          $(e.currentTarget).addClass('open');
        } else {
          new_left = 0;
        }
      }
      $(e.currentTarget).removeClass('dragstart');
      $(e.currentTarget).css('transform', 'translate3D(' + new_left + 'px,0px,0px)');
      $(e.currentTarget).attr("data-transX", new_left);
      $(e.currentTarget).addClass('animatedh');
      Drags.dragtag = false;
      enable_scroll()
    });
}
function closeallswipe() {
  $('.pay-list .pay-each').css('transform', 'translate3D(0px,0px,0px)');
  $('.pay-list .pay-each').removeClass('open');
  $('.pay-list .pay-each').addClass('animatedh');
  $('.pay-list .pay-each').attr("data-transX", 0);
}

页面使用 执行mytouch($('.pay-list .pay-each'));

基于JS实现移动端左滑删除功能

总结

以上所述是小编给大家介绍的基于JS实现移动端左滑删除功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
新手入门常用代码集锦
Jan 11 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
Jul 01 Javascript
JavaScript设计模式之工厂模式和构造器模式
Feb 11 Javascript
异步JS框架的作用以及实现方法
Oct 29 Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 Javascript
javascript显示系统当前时间代码
Dec 29 Javascript
JS实现数组按升序及降序排列的方法
Apr 26 Javascript
详解动画插件wow.js的使用方法
Sep 13 Javascript
JS继承与闭包及JS实现继承的三种方式
Oct 15 Javascript
React中常见的动画实现的几种方式
Jan 10 Javascript
详解VSCode配置启动Vue项目
May 14 Javascript
JavaScript队列结构Queue实现过程解析
Mar 07 Javascript
Vue2.0 多 Tab切换组件的封装实例
Jul 28 #Javascript
webpack实现热更新(实施同步刷新)
Jul 28 #Javascript
BootStrap Fileinput上传插件使用实例代码
Jul 28 #Javascript
解决React Native端口号修改的方法
Jul 28 #Javascript
vue+vux实现移动端文件上传样式
Jul 28 #Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
Jul 28 #Javascript
vue使用vue-cli快速创建工程
Jul 28 #Javascript
You might like
global.php
2006/12/09 PHP
php 移除数组重复元素的一点说明
2008/11/27 PHP
php curl_init函数用法
2014/01/31 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
理解JavaScript原型链
2016/10/25 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
python模拟斗地主发牌
2020/04/22 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
研究生毕业鉴定
2014/01/29 职场文书
给老婆的婚前保证书
2014/02/01 职场文书
事假请假条范文
2014/04/11 职场文书
2014年优秀党员材料
2014/12/18 职场文书
护理专业自我评价
2015/03/11 职场文书
班级管理经验交流材料
2015/11/02 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
MySQL的join buffer原理
2021/04/29 MySQL