使用touch实现左滑删除
2016-12-28 09:19
92 查看
在做左滑删除的时候,也是在网上找了一些例子,一开始使用的是swiper.js 插件,项目做完了一期,总结的时候终于认清了一个事实,不要相信插件。在不同的手机适配中,没有一款插件是完美的,总会存在各种各样的适配问题。例如:在华为某款手机,左滑删除之后,点击删除弹出背景阴影,但是在手机屏幕总会出现一块深色的长方阴影,找不到原因。
z
z
/* * 滑动列表 * */ var initX,initY; var moveX,moveY; var X = 0; var objX = 0; var move = false; var swipe_width; function myswiper(){ $(".payMentDetail_List").on('touchstart',function(event){ var touchNum = event.originalEvent.changedTouches.length; if(touchNum > 1){return};//判断触屏手指个数 var _Obj = isParentClass(event,"payMentDetail_ListLi"); var obj =_Obj.Obj; swipe_width = obj.children[obj.children.length-1].offsetWidth; var objClassName = _Obj.ClassNameExist;//当前滑动的是否是列表 if(objClassName){ //滑动的是列表中的位置 initX = event.originalEvent.changedTouches[0].pageX ; initY = event.originalEvent.changedTouches[0].pageY ; //objX =(obj.style.WebkitTransform.replace(/translateX\(/g,"").replace(/px\)/g,""))*1;//判断滑动的方向,向左或者向右 objX = parseInt(obj.style.left) || 0; if(event.target.className.indexOf("js_event_update") > -1 ||event.target.className.indexOf("js_event_delete") > -1 ||event.target.className.indexOf("js_event_remove") > -1){//判断是否是修改名称、删除、解除的操作 return; }else if(move == true){ if(obj.style.left == "" || parseInt(obj.style.left) == 0){ $(".payMentDetail_ListLi").css({"left":"0"}); move = false; return; } } }else{ return; } }); $(".payMentDetail_List").on('touchmove',function(event) { var touchNum = event.originalEvent.changedTouches.length; if(touchNum > 1){return};//判断触屏手指个数 moveY = event.originalEvent.changedTouches[0].pageY; var _Obj = isParentClass(event,"payMentDetail_ListLi"); var obj =_Obj.Obj; var isAlreadMove = false; var objClassName = _Obj.ClassNameExist; $.each($(".payMentDetail_ListLi"),function(i0,v0){ if(v0.style.left != "" && parseInt(v0.style.left) != 0){ isAlreadMove = true; } }); if( Math.abs(initY - moveY) > 10 && !isAlreadMove){ return; } moveX = event.originalEvent.changedTouches[0].pageX; X = moveX - initX; if (objClassName) {//如果是可以滑动的列表 event.stopPropagation();//加上这两个, event.preventDefault();//加上这两个, if(objX == 0){//一开始没有划出 if (X > 10) { obj.style.left = 0; } else { var l = Math.abs(X); l = l>swipe_width?swipe_width:l; obj.style.left = -l+"px"; } }else{//开始有划出 if (X > 0 && X < swipe_width) { var r = -swipe_width + Math.abs(X); if(r > 0){ obj.style.left = r+"px"; }else{ obj.style.left = r+"px"; } } } } }); $(".index_body").on('touchcancel touchend',function(event){ if($(window).scrollTop() > 0){ icon.show(); }else{ icon.hide(); } event.stopPropagation(); var _Obj = isParentClass(event,"payMentDetail_ListLi"); var obj =_Obj.Obj; var objClassName = _Obj.ClassNameExist; if(objClassName){ if(event.target.className.indexOf("js_event_update") > -1 ||event.target.className.indexOf("js_event_delete") > -1 ||event.target.className.indexOf("js_event_remove") > -1){//判断是否是修改名称、删除、解除的操作 return; } if(objX < 0){ obj.style.left = 0+"px"; } objX = parseInt(obj.style.left) || 0; if(objX > - (swipe_width / 4)){ obj.style.left = 0+"px"; }else{ obj.style.left = -swipe_width+"px"; move = true; BOOL.index_isSwipe = true; } } }); } myswiper();
相关文章推荐
- 使用ItemTouchHelper实现侧滑删除,拖拽
- 使用ItemTouchHelper轻松实现RecyclerView拖拽排序和滑动删除
- RecyclerView进阶:使用ItemTouchHelper实现拖拽和侧滑删除
- Android使用ItemTouchHelper实现侧滑删除和拖拽
- RecyclerView进阶:使用ItemTouchHelper实现拖拽和侧滑删除效果
- android---RecycleView使用ItemTouchHelper实现拖拽和侧滑删除
- 使用ItemTouchHelper轻松实现RecyclerView拖拽排序和滑动删除
- RecyclerView使用ItemTouchHelper实现拖拽和侧滑删除
- 使用AutoIT实现自动登录/退出客户端软件,删除日志
- 如何实现在DataGird控件使用CheckBox批量删除
- ASP.NET控件使用——Repeater通过CommandName实现删除功能
- 使用GridView加DetailsView实现查询,新增,编辑,删除
- 在struts中使用checkbox实现批量删除
- 使用xom实现xml文件数据的查找,删除,修改(完整beta版,daya原创)
- csdn 在c++ builder中,使用treeview实现对xml文档增加删除修改和查询等基本操作
- 使用JAVASCRIPT实现动态增加、删除选择项
- DataGrid的使用:(一)在DataGrid控件中实现基本的操作(编辑、删除、分页)
- 使用AutoIT实现自动登录/退出客户端软件,删除日志
- 使用javascript DOM实现动态实现删除表格
- 使用XML读写删除功能来实现资源文件配置