0

0

基于jQuery实现Accordion手风琴自定义插件

高洛峰

高洛峰

发布时间:2016-12-06 13:27:49

|

1447人浏览过

|

来源于php中文网

原创

目前网上有很多各种各样的手风琴插件,但是没有一个完整实现了的侧菜单,今天写了一个可以无限子节点的手风琴侧菜单,有需要的可以参考一下,有什么好的想法可以留言。(没有经过彻底测试,不过问题应该不大)

下面老规矩,直接贴代码:

名扬银河企业建站源码2.0.2
名扬银河企业建站源码2.0.2

名扬银河企业建站系统,适用于无代码基础的新手,快速搭建企业网站,程序内置了多项实用功能及插件,能够便捷的对网站进行修改、调整、优化等方面进行操作。【部分功能介绍】1、产品管理发布企业产品信息,管理企业产品,自定义产品封面图,产品详情图、文、视频,产品扩展属性自定义等。2、案例管理系统发布企业成功案例,管理成功案例,自定义案例封面图,案例详情图、文、视频,案例扩展属性自定义等。3、资讯管理系统发布企

下载
(function ($) {
  'use strict';
  var defaults = {
    url: null,
    param: {},
    data: {},
    fill: true,
    level_space: 15,
    onitemclick: null,
    style: {
      header: "accordion-header",
      header_title: "accordion-header-title",
      content: "accordion-content",
      selected: "selected",
      icon_base: "fa",
      icon_collapse: "fa-angle-up",
      icon_expand: "fa-angle-down"
    }
  }
  var methods = {
    init: function (options) {
      return this.each(function () {
        var $this = $(this);
        if (!$this.hasClass("accordion")) {
          $this.addClass("accordion");
        }
        var settings = $this.data('tw.accordion');
        if (typeof (settings) == 'undefined') {
          settings = $.extend({}, defaults, options);
          $this.data('tw.accordion', settings);
        } else {
          settings = $.extend({}, settings, options);
          $this.data('tw.accordion', settings);
        }
        if (settings.url) {
          $.ajax({
            type: "post",
            async: false,
            url: settings.url,
            data: settings.param,
            success: function (data) {
              settings.data = data;
            }
          });
        }
        if (settings.fill) {
          $this.height("100%");
        }
        if (settings.data.length > 0) {
          $this.data("count", settings.data.length);
          $.each(settings.data, function () {
            this.level = 1;
            var item = $this.accordion("add", this);
            $this.append(item);
          });
          if ($this.find("." + settings.style.selected).length == 0) {
            var data = $this.find(">li:first-child").data("data");
            $this.accordion("select", data);
          }
        }
      });
    },
    add: function (data) {
      var $this = $(this);
      var settings = $this.data("tw.accordion");
      var item = $("
  • "); item.data("data", data); var header = $("
    " + "" + "" + data.name + "
    "); header.css("padding-left", settings.level_space * data.level); item.append(header); if (data.childrens) { var toggle = $(""); toggle.css({ "font-size": "1.4em", "position": "absolute", "top": "7px", "right": "7px" }); header.append(toggle); var content = $("
      "); content.data("count", data.childrens.length); $.each(data.childrens, function () { this.level = data.level + 1; var child = $this.accordion("add", this); content.append(child); }); item.append(content); } header.click(function () { $this.accordion("select", data); }); if (data.selected) { $this.accordion("select", data); } return item; }, select: function (data) { var $this = $(this); var settings = $this.data("tw.accordion"); var header = $this.find("[data-accordion='" + data.id + "']"); var item = header.parent(); if (!header.hasClass(settings.style.selected) && !item.hasClass(settings.style.selected)) { var sibling = item.siblings(); sibling.removeClass(settings.style.selected).children("." + settings.style.selected).removeClass(settings.style.selected); sibling.children("." + settings.style.icon_expand).removeClass(settings.style.icon_expand).addClass(settings.style.icon_collapse); if (data.childrens) { item.addClass(settings.style.selected); header.find("." + settings.style.icon_collapse).removeClass(settings.style.icon_collapse).addClass(settings.style.icon_expand); if (settings.fill) { var count = item.parent().data("count") - 1; item.css("height", "calc(100% - " + (item.height() * count) + "px)"); } } else { header.addClass(settings.style.selected); } } if (settings.onitemclick) { settings.onitemclick(data); } }, update: function (url, param) { var $this = $(this); var settings = $this.data("tw.accordion"); if (typeof url == "object") { settings.param = url; } else { settings.url = url; settings.param = param; } $this.accordion("init", settings); }, destroy: function (options) { return $(this).each(function () { var $this = $(this); $this.removeData('accordion'); }); } } $.fn.accordion = function () { var method = arguments[0]; var args = arguments; if (typeof (method) == 'object' || !method) { method = methods.init; } else if (methods[method]) { method = methods[method]; args = $.makeArray(arguments).slice(1); } else { $.error('Method ' + method + ' does not exist on tw.accordion'); return this; } return method.apply(this, args); } })(jQuery);
      .accordion {
        margin:0;
        padding:0;
        font-size:14px;
      }
        .accordion > .accordion-header {
          list-style: none;
          margin: 0;
          padding: 0;
          border-bottom: 1px solid #ddd;
        }
          .accordion > .accordion-header.selected > .accordion-header-title {
            color: #0094ff;
          }
          .accordion > .accordion-header > .accordion-header-title {
            position: relative;
            width: 100%;
            height: 35px;
            line-height: 35px;
            background: #eee;
            border-bottom: 1px solid #ccc;
            cursor: pointer;
          }
            .accordion > .accordion-header > .accordion-header-title > i:first-child {
              font-size: 1.3em;
            }
            .accordion > .accordion-header > .accordion-header-title > span {
              position: relative;
              top: -1px;
              left: 5px;
            }
          .accordion > .accordion-header > .accordion-content {
            display: none;
            width: 100%;
            height: calc(100% - 35px);
            margin: 0;
            padding: 0;
          }
          .accordion > .accordion-header.selected > .accordion-content {
            display: block;
          }
      .accordion-content > .accordion-header {
          list-style: none;
          margin: 0;
          padding: 0;
      }
        .accordion-content > .accordion-header.selected {
          color: #0094ff;
        }
        .accordion-content > .accordion-header > .accordion-header-title {
          position: relative;
          width: 100%;
          height: 32px;
          line-height: 32px;
          cursor: pointer;
          border-bottom: 1px solid #ccc;
        }
          .accordion-content > .accordion-header > .accordion-header-title:hover {
            background:#eee;
          }
          .accordion-content > .accordion-header > .accordion-header-title.selected {
            color: #fff;
            background: #0094ff;
            border-left: 3px solid #ff6a00;
            border-bottom: 0px;
          }
            .accordion-content > .accordion-header > .accordion-header-title > i:first-child {
              font-size: 1.2em;
            }
            .accordion-content > .accordion-header > .accordion-header-title > span {
              position: relative;
              top: -1px;
              left: 5px;
            }
            .accordion-content > .accordion-header > .accordion-header-title.selected > i:first-child {
              position:relative;
              left:-3px;
            }
            .accordion-content > .accordion-header > .accordion-header-title.selected > span {
              position: relative;
              top: -1px;
              left: 2px;
            }
          .accordion-content > .accordion-header > .accordion-content {
            display: none;
            width: 100%;
            height: calc(100% - 32px);
            margin: 0;
            padding: 0;
          }
          .accordion-content > .accordion-header.selected > .accordion-content {
            display: block;
          }

      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

      热门AI工具

      更多
      DeepSeek
      DeepSeek

      幻方量化公司旗下的开源大模型平台

      豆包大模型
      豆包大模型

      字节跳动自主研发的一系列大型语言模型

      通义千问
      通义千问

      阿里巴巴推出的全能AI助手

      腾讯元宝
      腾讯元宝

      腾讯混元平台推出的AI助手

      文心一言
      文心一言

      文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

      讯飞写作
      讯飞写作

      基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

      即梦AI
      即梦AI

      一站式AI创作平台,免费AI图片和视频生成。

      ChatGPT
      ChatGPT

      最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

      相关专题

      更多
      全国统一发票查询平台入口合集
      全国统一发票查询平台入口合集

      本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

      12

      2026.02.03

      短剧入口地址汇总
      短剧入口地址汇总

      本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

      21

      2026.02.03

      植物大战僵尸版本入口地址汇总
      植物大战僵尸版本入口地址汇总

      本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

      11

      2026.02.03

      c语言中/相关合集
      c语言中/相关合集

      本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

      2

      2026.02.03

      漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题
      漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题

      本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。

      8

      2026.02.03

      Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口
      Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口

      本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。

      94

      2026.02.03

      Java 设计模式与重构实践
      Java 设计模式与重构实践

      本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。

      2

      2026.02.03

      C# 并发与异步编程
      C# 并发与异步编程

      本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

      2

      2026.02.03

      Python 强化学习与深度Q网络(DQN)
      Python 强化学习与深度Q网络(DQN)

      本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。

      2

      2026.02.03

      热门下载

      更多
      网站特效
      /
      网站源码
      /
      网站素材
      /
      前端模板

      精品课程

      更多
      相关推荐
      /
      热门推荐
      /
      最新课程
      jQuery 教程
      jQuery 教程

      共42课时 | 5.4万人学习

      HTML+CSS基础与实战
      HTML+CSS基础与实战

      共132课时 | 10.2万人学习

      tp6+adminlte搭建通用后台
      tp6+adminlte搭建通用后台

      共39课时 | 5.8万人学习

      关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
      php中文网:公益在线php培训,帮助PHP学习者快速成长!
      关注服务号 技术交流群
      PHP中文网订阅号
      每天精选资源文章推送

      Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号