未毕业小白 2020-09-18 15:12 采纳率: 0%
浏览 63

实现添加功能时,第一次增加一个,第二次增加两个,求大佬帮助。我只想每次增加一个

<!DOCTYPE html>

图片说明图片说明
<meta charset="UTF-8">
<meta name="viewport" , initial-scale="1.0 ">
<title>Class</title>

<script src="JQerymini.js "></script>
<script src="1.js "></script>
<link rel="stylesheet " href="1.css ">






  • 测试1



  • 测试2



  • 测试3




+

    <div class="main ">
        <section class="conactive ">测试内容1</section>
        <section>测试内容2</section>
        <section>测试内容3</section>
    </div>
</div>


$(function() {
    //定义一个tab类
    var that;
    class Tab {
        constructor(id) {
            // this.main = $(id);
            that = this;
            this.main = $(id);
            this.add = this.main.find('.add');
            this.iconguanbi = this.main.find('.icon-guanbi');
            this.lis = this.main.find('li');
            this.sections = this.main.find('section');
            this.init();
        }
        init() {
                // 初始化操作,相关元素绑定事件
                // console.log(this);
                this.get();
                this.lis.on('click', this.toggleTab);
                this.add.on('click', this.addTab);

                this.iconguanbi.on('click', this.deleteTab);
            }
            //切换功能
        toggleTab() {
            console.log(this);
            that.clear();
            var index = $(this).index();
            $(this).addClass('active');
            that.sections.eq(index).addClass('conactive').siblings().removeClass('conactive');
        }

        //清除操作
        clear() {
                this.lis.removeClass('active');
                this.sections.removeClass('conactive');
            }
            //添加功能
        addTab() {
                that.clear();

                var li = $('<li><span></span>' + '测试' + '<span class=" iconfont icon-guanbi "></span></li>');
                li.addClass('active');
                that.lis.parents('ul').append(li);
                // console.log(that.lis.parents('ul').length);
                that.sections.parents('.main').append('<section class="conactive">测试内容</section>')

                that.init();
            }
            //删除功能
        deleteTab() {
                that.sections.eq($(this).parents('li').index()).remove();
                $(this).parents('li').remove();
                that.init();
            }
            //修改功能
        editTab() {}
            //获取所有li,section
        get() {
            this.lis = this.main.find('li');
            this.sections = this.main.find('section');

        }
    }
    new Tab("#tabsbox");
    // tab.init();
})
  • 写回答

2条回答 默认 最新

  • jingluan666 2020-09-18 16:33
    关注

    因为init方法里面订阅了一次click方法

     this.add.on('click', this.addTab);
    

    而addTab方法内调用 that.init();
    那么click方法又被订阅了一次,所以导致有两个订阅,如果再点击一次,将会订阅三次

    所以,事件被订阅一次就行了,避免被多次订阅,有几次订阅就会执行几次

    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图