jQuery Collapse1.1.0折叠插件简单使用


Posted in jQuery onAugust 28, 2017

本文实例为大家分享了jQuery Collapse1.1.0折叠插件的使用,供大家参考,具体内容如下

/*!
* jQuery collapse - A Wizard Plugin - http://www.cnblogs.com/yeyuansheng/
* ------------------------------------------------------------------------------------
*
* @version 1.1.0
* @since 2017.08.28
* @author 夜原生
* @documentation http://www.cnblogs.com/yeyuansheng/
*
* Usage with default values:
* ------------------------------------------------------------------------------------
* {
* panel: '',//默认空为第一个标签
* content: '',//默认空为第二个标签
* active: 'active',//点击样式
* shut: true,//展开的在次点击可闭合
* style: 'y',//x,y,0上下左右滑动展开/无动作展开
* speed: 200,//动作的速度
* event: "click",//动作
* class: 'active',//item 样式
* func: function(){},//增加事件
* open:''//默认打开
* }
*/

(function($) {
  var collapse = {
    version:'1.1.0',
    style:{
      slideRight: {
        width : "hide", 
        paddingLeft : "hide", 
        paddingRight : "hide", 
        marginLeft : "hide", 
        marginRight : "hide" 
      },
      slideLeft: {
        width : "show",
        paddingLeft : "show",
        paddingRight : "show",
        marginLeft : "show",
        marginRight : "show"
      },
      slideUp: {
        borderTopWidth: "hide",
        borderBottomWidth: "hide",
        paddingTop: "hide",
        paddingBottom: "hide",
        height: "hide"
      },
      slideDown: {
        borderTopWidth: "show",
        borderBottomWidth: "show",
        paddingTop: "show",
        paddingBottom: "show",
        height: "show"
      }
    },
    init:function(options){
      var opts = $.extend({}, $.fn.collapse.defaults, options);
      if(opts.style == 'x' && options.shut == 'undefined'){
        opts.shut = false;
      }
      return opts;
    },
    clickChange:function(obj,op){
      var panel = (op.panel == '')?$(obj).children(':first'):$(obj).find('> '+op.panel);
      panel.on(op.event,function(){ 
        var parent = $(this).parent();
        var sub = (op.content == '')?parent.children().eq(1):parent.find('> '+op.content);
        if($(sub).is(':visible')) {
          if(op.shut){
            collapse._animate(sub,op,0,function(){
              parent.removeClass(op.class);
              op.func();
            });
          }
        }else{
          parent.siblings().each(function(){
            var t = $(this);
            if(t.hasClass(op.active)){
              var uls = (op.content == '')?t.children().eq(1):t.find('> '+op.content);
              if(uls.length == 0){
                t.removeClass(op.active);
              }else{
                collapse._animate(uls,op,0,function(){
                  t.removeClass(op.active);
                });
              } 
            }
          });
          parent.addClass(op.active);
          collapse._animate(sub,op,1,function(){
            op.func();
          });
        }
      });
    },
    itemChange:function(item,op){
      var uls = (op.content == '')?$(item).children().eq(1):$(item).children().find('> '+op.content);
      uls.children().on(op.event,function(){
        $(item).parent().children().each(function(){
          if(op.content == ''){
            $(this).children().eq(1).children().removeClass(op.class);
          }else{
            $(this).children().find('> '+op.content).children().removeClass(op.class);
          }
        });
        $(this).addClass(op.class);
      });
    },
    _animate:function(obj,op,bool,callback){
      if(op.style){
        if(bool){
          slide =(op.style == 'x')?collapse.style.slideLeft:collapse.style.slideDown;
        }else{
          slide =(op.style == 'x')?collapse.style.slideRight:collapse.style.slideUp;
        } 
        obj.animate(slide,op.speed,callback); 
      }else{
        (bool)?obj.show():obj.hide();//可以改用CLASS控制
      }
    },
    open:function(obj,op,open){
      var li = $(obj).children().eq(open[0]);
      li.addClass(op.active);
      var ul = (op.content == '')?li.children().eq(1):li.find('> '+op.content);
      ul.show();
      ul.children().eq(open[1]).addClass(op.class);
    }
  }
  $.fn.collapse = function(options){
    var opts = collapse.init(options);
    if(opts.open != '')collapse.open(this,opts,opts.open);
    $(this).children().each(function(){
      collapse.clickChange(this,opts);
      collapse.itemChange(this,opts);
    }); 
  }
  $.fn.collapse.defaults = { 
    panel: '',
    content: '',
    active: 'active',
    shut: true,
    style: 'y',
    speed: 200,
    event: "click",
    class: 'active',
    func: function(){},
    open:''
  }
})(jQuery);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery加密密码到cookie的实现代码
Apr 18 jQuery
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
学习jQuery中的noConflict()用法
Sep 28 jQuery
jQuery实现网页拼图游戏
Apr 22 jQuery
jQuery无冲突模式详解
Jan 17 jQuery
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 jQuery
jquery轮播图插件使用方法详解
Jul 31 jQuery
jQuery实现开关灯效果
Aug 02 jQuery
解决IE7中使用jQuery动态操作name问题
Aug 28 #jQuery
jQuery菜单实例(全选,反选,取消)
Aug 28 #jQuery
基于jQuery实现图片推拉门动画效果的两种方法
Aug 26 #jQuery
详解webpack3如何正确引用并使用jQuery库
Aug 26 #jQuery
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 #jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 #jQuery
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 #jQuery
You might like
微信公众平台DEMO(PHP)
2016/05/04 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
php加密解密字符串示例
2016/10/13 PHP
DOM相关内容速查手册
2007/02/07 Javascript
js模拟类继承小例子
2010/07/17 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
JS实现简单打字测试
2020/06/24 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
django自带调试服务器的使用详解
2019/08/29 Python
python实现银行实战系统
2020/02/26 Python
Python reques接口测试框架实现代码
2020/07/28 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
机械制造毕业生求职信
2014/03/03 职场文书
志愿者活动总结
2014/04/28 职场文书
音乐教师个人总结
2015/02/06 职场文书
营业员岗位职责
2015/02/11 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python