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插件
Mar 29 jQuery
基于jQuery实现文字打印动态效果
Apr 21 jQuery
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
jQuery回调方法使用示例
Jun 26 jQuery
简述jQuery Easyui一些用法
Aug 01 jQuery
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
Apr 17 jQuery
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
jQuery中常用动画效果函数知识点整理
Aug 19 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
php 更新数据库中断的解决方法
2009/06/05 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
Python2.x中文乱码问题解决方法
2015/06/02 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
python+django+rest框架配置创建方法
2019/08/31 Python
Python autoescape标签用法解析
2020/01/17 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
python怎么判断模块安装完成
2020/06/19 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
python math模块的基本使用教程
2021/01/16 Python
adidas泰国官网:adidas TH
2020/07/11 全球购物
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
迎国庆演讲稿
2014/09/15 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
三八节祝酒词
2015/08/11 职场文书