左滑菜单(删除、置顶)

<div class="xinzhibox">
        <div class="list">
            <div class="xinzhilist" tapmode  onclick="openlist('数字化商业')">
                <div class="imgbox">
                    <img src="../image/news/img.png" alt="" />
                    <div class="dian red"></div>
                </div>
                <div class="xinzhilistright">
                    <p>数字化商业</p>
                    <span>CIGI:央行区块链联盟是G20国,央行区块链联盟是G20国,央行区块链联盟是G20国</span>
                </div>
                <div class="zhiding"></div>
            </div>
            <div class="right">
                <div tapmode class="top_btn">取消置顶</div>
                    <div tapmode class="del_btn">取消订阅</div>
                </div>
            </div>
                
            <div class="list">
                <div class="xinzhilist" tapmode  onclick="openlist('数字化商业')">
                    <div class="imgbox">
                    <img src="../image/news/img.png" alt="" />
                    <div class="dian red"></div>
                        </div>
                        <div class="xinzhilistright">
                            <p>数字化商业</p>
                            <span>CIGI:央行区块链联盟是G20国,央行区块链联盟是G20国,央行区块链联盟是G20国</span>
                        </div>
                        <div class="zhiding"></div>
                    </div>
                    <div class="right">
                        <div tapmode class="top_btn">取消置顶</div>
                        <div tapmode class="del_btn">取消订阅</div>
                    </div>
                </div>
                
                <div class="list">
                    <div class="xinzhilist" tapmode  onclick="openlist('数字化商业')">
                        <div class="imgbox">
                            <img src="../image/news/img.png" alt="" />
                            <div class="dian red"></div>
                        </div>
                        <div class="xinzhilistright">
                            <p>数字化商业</p>
                            <span>CIGI:央行区块链联盟是G20国,央行区块链联盟是G20国,央行区块链联盟是G20国</span>
                        </div>
                    </div>
                    <div class="right">
                        <div tapmode class="top_btn">置顶</div>
                        <div tapmode class="del_btn">取消订阅</div>
                    </div>
                </div>-->
            
        </div>

html

 

function addListenFn() {
        /*左滑移除*/
    
        //设置要滑动的距离
        var slideWidth;
        // 获取所有行,对每一行设置监听
        var lines = $(".xinzhilist");
        var linesParent = $(".list");
        var len = lines.length;
        var lastXForMobile;
        // 用于记录被按下的对象
        var pressedObj;
        // 当前左滑的对象
        var lastLeftObj;
        // 上一个左滑的对象
        // 用于记录按下的点
        var start;
        // 监听
        linesParent.delegate(".xinzhilist", "touchstart", function(e) {
            lastXForMobile = event.changedTouches[0].pageX;
            pressedObj = this;
            slideWidth = $(pressedObj).parent().find('.right').width();
            // 记录被按下的对象
            // 记录开始按下时的点
            var touches = event.touches[0];
            start = {
                x : touches.pageX, // 横坐标
                y : touches.pageY // 纵坐标
            };
        });
        linesParent.delegate(".xinzhilist", "touchmove", function(e) {
            // 计算划动过程中x和y的变化量
            var touches = event.touches[0];
            delta = {
                x : touches.pageX - start.x,
                y : touches.pageY - start.y
            };
            // 横向位移大于纵向位移,阻止纵向滚动
            if (Math.abs(delta.x) > Math.abs(delta.y)) {
                event.preventDefault();
            }
        });
        linesParent.delegate(".xinzhilist", "touchend", function(e) {
            if (lastLeftObj && pressedObj != lastLeftObj) {// 点击除当前左滑对象之外的任意其他位置
                $(lastLeftObj).animate({
                    marginLeft : 0
                }, 300);
                // 右滑
                lastLeftObj = null;
                // 清空上一个左滑的对象
            }
            var diffX = event.changedTouches[0].pageX - lastXForMobile;
            if (diffX < -60) {
                $(pressedObj).animate({
                    marginLeft : -slideWidth + "px"
                }, 300);
                // 左滑
                lastLeftObj && lastLeftObj != pressedObj && $(lastLeftObj).animate({
                    marginLeft : 0
                }, 300);
                // 已经左滑状态的按钮右滑
                lastLeftObj = pressedObj;
                // 记录上一个左滑的对象
            } else if (diffX > 60) {
                if (pressedObj == lastLeftObj) {
                    $(pressedObj).animate({
                        marginLeft :  0
                    }, 300);
                    // 右滑
                    lastLeftObj = null;
                    // 清空上一个左滑的对象
                }
            }
        });
    }    

js

posted @ 2017-05-12 10:56  吴粑粑  阅读(375)  评论(0编辑  收藏  举报