基于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 相关文章推荐
js 操作符实例代码
Oct 24 Javascript
使用JavaScript 实现各种跨域的方法
May 08 Javascript
jQuery实现首页图片淡入淡出效果的方法
Jun 10 Javascript
js如何实现淡入淡出效果
Nov 18 Javascript
jQuery插件实现文字无缝向上滚动效果代码
Feb 25 Javascript
BootStrap制作导航条实例代码
May 06 Javascript
在js中实现邮箱格式的验证方法(推荐)
Oct 24 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
Nov 18 Javascript
详解Javascript中DOM的范围
Feb 13 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 jQuery
es6函数之尾递归用法实例分析
Apr 25 Javascript
解决vue 退出动画无效的问题
Aug 09 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
学习使用PHP数组
2006/10/09 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
Symfony查询方法实例小结
2017/06/28 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
JQuery球队选择实例
2015/05/18 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
浅谈super-vuex使用体验
2018/06/25 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
python3中rank函数的用法
2019/11/27 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
银行领导班子四风对照检查材料
2014/09/27 职场文书
2014年终个人总结报告
2015/03/09 职场文书
高中地理教学反思
2016/02/19 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
SQL 聚合、分组和排序
2021/11/11 MySQL
Nginx利用Logrotate实现日志分割
2022/05/20 Servers