基于jQuery的封装函数

封装tab栏切换功能

    // 第一种封装:
    // btns 点击某个选项
    // cons 对应的显示内容
    // active 点击后的样式
    function table(btns, cons, active) {
      $(btns).click(function () {
        $(this).addClass(active).siblings().removeClass(active);
        $(cons).eq($(this).index()).css('display', 'block').siblings().css('display', 'none');
      });
    }
    //调用传参
    table()
    
    // 第二种封装:
    function table(options) {
      options = Object.assign({
        btns: '',
        cons: '',
        active: ''
      }, options);

      $(options.btns).click(function () {
        $(this).addClass(options.active).siblings().removeClass(options.active);
        $(options.cons).eq($(this).index()).css('display', 'block').siblings().css('display', 'none');
      });
    }
    //调用传参 对象形式
    table({ })
    
 //第三种:面向对象jq插件开发
      $.fn.tab = function (opt) {
        //ES6 class
        class Tab {
          constructor(data) { //属性
            this.defaults = {
              active: '.active'
            };
            //替补方案:
            $.extend(this.defaults, data);
          }
          init() {
            //查找节点,绑定事件
            this.btns = $(this.defaults.btns);
            this.cons = $(this.defaults.cons);
            let that = this.defaults;
            let cons = this.cons;
            $(this.btns).click(function () {
              $(this).addClass(that.active).siblings().removeClass(that.active);
              $(cons).eq($(this).index()).css('display', 'block').siblings().css('display', 'none');
            });
          }
        }
        let t = new Tab(opt);//创建一个实例
        t.init();
      }

      //使用插件
      $('#box').tab({
        btns: '#box input',
        cons: '#box .conbox',
        active: 'active'
      });
      
//第四种:狗哥的逼格封装
//封装一个选择卡切换功能
//参数:对象的形式 options
// 参数1:tab 参数2:con 
// 参数3:tab_active =>(tab的活跃的类) tab_def(tab默认带有的类,要么为"")
// 参数4:con_active =>(con的活跃的类) con_def(tab默认带有的类,要么为"")
function tab(options) {
  //设置默认的配置参数
  options = Object.assign({
    tab: "",
    con: "",
    tab_active: "",
    tab_def: "",
    con_active: "",
    con_def: ""
  }, options)
  var sel_tab = $(options.tab);
  var sel_con = $(options.con);

  sel_tab.each((i, item) => {
    $(item).on("click", function () {
      sel_tab.each((i, item) => {
        item.className = options.tab_def;
        // console.log(options.con_def, sel_con[i]);
        sel_con[i].className = options.con_def;
      })
      item.className = options.tab_active;
      sel_con[i].className = options.con_active
    })
  })
}
//调用模板
// tab({
//   tab: ".makeUp-con-tab-item",
//   con: ".makeUp-con-con-box",
//   tab_active: "makeUp-con-tab-item active",
//   tab_def: "makeUp-con-tab-item",
//   con_active: "makeUp-con-con-box conActive",
//   con_def: "makeUp-con-con-box"
// })

继续封装中。。。。。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值