zoukankan      html  css  js  c++  java
  • jQuery多次点击事件切换状态

    今天的需求是这样。

    移动端页面,有一篇比较长的文章,大概有二十几个段落。展现在用户面前的只是前面的六个段落,用户点击按钮,再展开六个段落,直到整个文章加载完毕,按钮内容变成“收起文章内容”。

    好吧,无论以后别的项目是否需要整个功能,我先封装起来。

    六个初始状态就是展开的段落,偷懒了下, 放在article_show的父元素下,而隐藏的,则放在 class 名为 article_lazy 的父元素下,这样写js可以省点事。

    $(function () {
        function lazyLoad(article, showNum, btn, oHtml) {
            var oP = $(article).children();//需要隐藏的每个段落
            var num = 0;//初始化
            var oBtn = $(btn);//点击按钮
            var txt = oBtn.html();//保存按钮的html内容
    
            oBtn.on('click', function () {
                num++;//每次点击累计
                var len = showNum*num; //展现段落 = 每次点击要展开的段落数*点击次数
                for(var i=len-showNum; i<len; i++){  //开始循环的段落 = 展现段落-已经展现的段落
                    //console.log(i);
                    if(!oP.hasClass()){ //判断段落是否隐藏,如果隐藏
                        $(oP[i]).addClass("active");
                    }
                }
    
                if($(oP[oP.length-showNum]).hasClass('active')){ //判断倒数showNum个段落是否隐藏,是否已到文章底部
                    oBtn.text(oHtml).on('click', function () { //更改按钮的内容,绑定点击事件
                        oP.removeClass('active'); //点击后,段落全部隐藏。(偷懒不是英明的吧。。。)
                        oBtn.html(function () { //点击后,按钮内容切换为原来的内容。
                            return txt;
                        });
                    });
                }
            })
        }
        lazyLoad('.article_lazy', 6, '.more','收起文章内容');
    
    });
  • 相关阅读:
    C# httpclient获取cookies实现模拟web登录
    C# httpclient获取cookies实现模拟web登录
    长连接与短连接的区别以及使用场景
    长连接与短连接的区别以及使用场景
    vuejs项目性能优化总结
    vuejs项目性能优化总结
    C# 发送HTTP请求(可加入Cookies)
    C# 发送HTTP请求(可加入Cookies)
    集合框架系列教材 (十六)- 其他
    集合框架系列教材 (十五)- 关系与区别
  • 原文地址:https://www.cnblogs.com/dodocie/p/7716472.html
Copyright © 2011-2022 走看看