jquery插件制作 -- 6.手风琴Panel
我们今天要做的是手风琴panel,jquery.ui里面有个叫做accordtion的插件,我们要实现的效果和他一样。
首先我们还是创建一个html文件,里面包含如下的html结构。
<div id="pane-container"> <div class="pane"> <h1>first pane</h1> <p>this script should allow only one pane to be visible at a time.</p> </div> <div class="pane"> <h1>second pane</h1> <p>this script should allow only one pane to be visible at a time.</p> </div> <div class="pane"> <h1>third pane</h1> <p>this script should allow only one pane to be visible at a time.</p> </div> </div>
然后为页面定义如下css:
<style type="text/css"> #pane-container { margin: 0; padding: 0; width: 200px; } .pane h1 { padding: 5px; cursor: pointer; position: relative; background-color: #4c4c4c; color: #fff; font-weight: normal; font-size: 20px; margin: 0px; } .pane p { padding: 10px; margin: 0; background-color: #e4e4e4; } </style>
下面我们来介绍jquery.accordtion.js插件的实现。首先我们需要考虑的是如何隐藏pane里面的内容部分,也就是p标签。h1作为标题是不需要隐藏的。
(function ($) { $.fn.accordtion = function () { return this.each(function () { $(this).find('p').hide(); }); } })(jQuery);
页面调用的代码:
$(document).ready(function () { $('#pane-container').accordtion(); });
插件代码很简单,就是找到class为pane的div下面的p,对其隐藏。接下来我们要实现的是,当用户点到h1的时候,对应的p标签的内容显示出来,同时其他h1对应的p标签的内容隐藏。代码如下:
//对h1标签设置click事件 self.delegate('h1', 'click', function () { //为对应的p标签设置slideToggle效果 $(this).next('p').slideToggle(600) //获取其他pane对象,找到他们下面的p标签,收起 .parent().siblings().children('p').slideUp(600); });
现在我们的插件已经很有型了,最后要做的就是添加用户自定义属性options,这次我们只添加一个‘默认显示第几个pane’的属性。
//设置第几个元素显示 self.children(':eq(' + options.visibleByDefault + ')')//找到和options.visibleByDefault一致的pane对象 .children('p') .show();
完整的代码大家还是下demo自己看吧。jQuery.plugin.accordtion.zip。
谢谢大家的支持,希望本篇文章对你有帮助。如果对代码哪里有不清楚的地方,可以联系我。
分类:
JavaScript
, jquery
标签:
jquery插件制作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构