折叠和非折叠效果如左右图所示

代码如下

//折叠
$.fn.jAccordionfold = function() {
return this.each(function() {
var obj = $(this);
obj.find('.jgui-accordion-navitem').siblings("dd").slideUp();
obj.find('.jgui-accordion-navitem span').hide();
obj.find('.jgui-accordion-navitem .jgui-accordion-navitem-more').hide();
});
};
//展开
$.fn.jAccordionunfold = function() {
return this.each(function() {
var obj = $(this);
obj.find('.jgui-accordion-navitem-more.expanded').closest(".jgui-accordion-navitem").siblings("dd").slideDown();
obj.find('.jgui-accordion-navitem span').show();
obj.find('.jgui-accordion-navitem .jgui-accordion-navitem-more').show();
});
};

把所有展开的抽屉项折叠起来,再改变Accordion的宽度即可实现上图效果,收到侧边栏后,点击任意图标能够恢复到正常非折叠状态进行操作。

$('#folderbtn').click(function(event) {
if($('#leftpanel').is('.unfold')){//未折叠
$('#leftpanel').width(50);
$('#centerpanel').css('left','50px');
$('#mainlogo').html('J');
$('#menuaccordion').jAccordionfold(); }
else{
$('#leftpanel').width(300);
$('#centerpanel').css('left','300px');
$('#mainlogo').html('JGUI DEMO');
$('#menuaccordion').jAccordionunfold();
}
$('#leftpanel').toggleClass('unfold');
$('#folderbtn').toggleClass('icon-menu-unfold icon-menu-fold');
});
$("#menuaccordion .jgui-accordion-navitem").click(function(event) {
if(!$('#leftpanel').is('.unfold')){
$('#leftpanel').width(300);
$('#centerpanel').css('left','300px');
$('#mainlogo').html('JGUI DEMO');
$('#menuaccordion').jAccordionunfold();
$('#leftpanel').toggleClass('unfold');
$('#folderbtn').toggleClass('icon-menu-unfold icon-menu-fold');
}
});

1、目前折叠起来的图标没有带tooltip或者菜单,如果有更好的用户体验,当鼠标放到折叠的菜单上时,应该显示一个tooltip或者菜单,这个将在以后实现。

2、目前的实现方法是在全局都可见的,应该使用一个accordion对象封装起来,也将后续实现。

JGUI源码:Accordion折叠到侧边栏实现(6)的更多相关文章

  1. JGUI源码:从头开始,建一个自己的UI框架(1)

    开篇 1.JGUI是为了逼迫自己研究底层点的前端技术而做的框架,之前对web底层实现一直没有深入研究,有了技术瓶颈,痛定思痛从头研究, 2.虽然现在vue技术比较火,但还在发展阶段,暂时先使用JQue ...

  2. JGUI源码:鼠标中键滚动再次优化(5)

    //电脑端中键滚动事件 var mousewheel = getBrowserInfo() == "Firefox" ? "DOMMouseScroll" : ...

  3. JGUI源码:Accordion鼠标中键滚动和手机端滑动实现(2)

    本文是抽屉组件在PC端滚动鼠标中键.手机端滑动时,滚动数据列表实现方法,没有使用iscroll等第三方插件,支持火狐,谷歌,IE8+等浏览器. 演示在:www.jgui.com Github地址:ht ...

  4. JGUI源码:Tab组件实现(9)

    程序界面效果如下 Tab组件由多个TabItem组成,超出部分隐藏,可以通过左右按钮滑动显示出来 1.封装 // 初始化内容 $(function () { J.JTab($(".jgui- ...

  5. JGUI源码:JS菜单动态绑定(8)

    我们知道Jquery绑定事件后的新添加的对象是不响应事件的,为了解决这个问题,动态添加的对象需要从新绑定,使用一个init方法实现代码如下 //Accordion封装 (function($) { J ...

  6. JGUI源码:Accordion兼容IE8实现(3)

    本来不考虑IE8,但是还是有部分客户用的XP,有不代表没有,尽量做一下兼容处理1.before,after,要使用:不能使用:: 2.阻止冒泡 function stopPropagation(e) ...

  7. JGUI源码:组件及函数封装方法(7)

    以Accordion为例1.在base.js定义一个对象,这样可以和JQuery对象区分开,用户使用组件时比较清晰一点,也可以在这里引用多个库. var JGUI = J = { version : ...

  8. JGUI源码:实现简单进度条(19)

    程序效果如下 实现进度条动画主要有两种方法:(1)使用缓动,(2)使用Jquery Animate,本文使用第二种方法,先实现代码,后续进行控件封装 <style> .jgui-proce ...

  9. JGUI源码:实现蒙版层显示(18)

    有的时候需要显示一个蒙版层,蒙版层显示的主要原理是在指定元素比如div上创建一个子元素div,设置absolute.宽高100%.设置z-index置于顶层,设置半透明效果,fadein,fadeou ...

随机推荐

  1. 环形链表得golang实现

    给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 输入:head = ...

  2. RabbitMQ消费者消息权重,

    有的消费者处理速度快,有的消费者处理速度慢,我们想给处理快的多发消息,处理慢的少发消息, 怎么办呢?按照之前的轮询模式,肯定不行的,这里可以检测消息数量,如果消费者正在处理就不给他发 .... def ...

  3. Configuring Apache Kafka Security

    This topic describes additional steps you can take to ensure the safety and integrity of your data s ...

  4. JavaScript面向对象—基本数据类型和引用数据类型的区别和变量及作用域(函数和变量)

    基本类型和引用类型的值 ECMAScript 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值. 基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置. 而引用 ...

  5. [LeetCode] 15. 三数之和

    题目链接:https://leetcode-cn.com/problems/3sum/ 题目描述: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a ...

  6. day21(1)---python的内存管理

    垃圾回收机制: 不能被程序访问到的数据,就称之为垃圾. 引用计数:引用计数是用来记录值的内存地址被记录的次数的 每一次对值地址的引用都可以使得该值的引用计数+1 每一次对值地址的释放都可以使得该值的引 ...

  7. 【P2015】二叉苹果树 (树形DP分组背包)

    题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 现在这颗树枝条太多了,需要剪枝.但是 ...

  8. Linux内存管理 (1)物理内存初始化

    专题:Linux内存管理专题 关键词:用户内核空间划分.Node/Zone/Page.memblock.PGD/PUD/PMD/PTE.lowmem/highmem.ZONE_DMA/ZONE_NOR ...

  9. 【Beta阶段】展示博客

    Beta阶段展示博客 blog software buaa 1.团队成员简介 Email:qianlxc@126.com Free time:8:00 7:00 a.m ~ 11:00 12:00p. ...

  10. 安装inotify-tools监控工具

    安装inotify-tools监控工具 yum install -y inotify-tools 2:查看inotify-tools包的工具程序 [root@dns3 ~]# rpm -ql inot ...