jquery插件开发之实现jquery手风琴功能分享


Posted in Javascript onMarch 10, 2014

可用于图片或者容器,使用与常规jQuery插件调用方式无异。实现原理也不难理解,都在代码注释中。想研究的可以看下面的代码,或者样例演示。

;(function($){
    /*
     * 基于jQuery的简易手风琴切换插件
     */
    $.fn.iAccordion=function(iSet){
        var self=this;
        iSet=$.extend({Type:'mouseover',Select:'img',Cur:0,InitInterval:100,Interval:500,Easing:''},iSet||{});
        /*
         * Type: 鼠标事件类型,mouseover,click,mouseleave等
         * Select: 选择器,用以获取需要切换的元素集合
         * Cur: 默认展开元素的索引
         * InitInterval: 初始化手风琴效果动画间隔时间
         * Interval: 鼠标事件动画间隔时间
         * Easing: 动画效果,需要jQuery.easing支持,参数可参考jQuery.easing@ http://gsgd.co.uk/sandbox/jquery/easing/
         */
        var item,boxW,selectW,animateW,sIndex,animateL;
        $(self).each(function(){
            //初始化容器样式
            $(this).css({'position':'relative','overflow':'hidden'});
            item=$(this).find(iSet.Select);
            //初始化切换元素样式
            item.css({'position':'absolute','left':0,'top':0});
            boxW=$(this).outerWidth();
            selectW=item.outerWidth();
            animateW=(boxW-selectW)/(item.size()-1);
            //初始化元素排列并为元素data一个索引值
            item.each(function(i){
                $(this).animate({'left':animateW*i+'px'},iSet.InitInterval,iSet.Easing);
                $(this).data('index',i);
            }).on(iSet.Type,function(e){//绑定鼠标事件
                //获取当前元素索引值
                sIndex=$(this).data('index');
                    //鼠标事件动画,通过判断元素索引值与当前元素索引值的大小关系动画显示当前元素并动画排列
                    item.each(function(n){
                        n > sIndex ? animateL=selectW+animateW*(n-1) : animateL=animateW*n;
                        $(this).stop().animate({'left':animateL+'px'},iSet.Interval,iSet.Easing);
                    });
            }).eq(iSet.Cur).trigger(iSet.Type);
        });
    }
})(jQuery);

如何调用?
1、在页面中引入上面的插件代码;
2、$(selectmain).iAccordion({…});
3、相关参数及功能,请参考插件中的注释说明。
小小的提示,若需要定义Easing,需要导入jQuery.easing插件 ,Easing的参数即jQuery.easing的方法名称,如easeOutBounce、easeOutQuint等。

Javascript 相关文章推荐
javascript下有关dom以及xml节点访问兼容问题
Nov 26 Javascript
jquery无缝向上滚动实现代码
Mar 29 Javascript
使用javascript实现页面定时跳转总结篇
Sep 21 Javascript
JS比较两个时间大小的简单示例代码
Dec 20 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
jQuery实现美观的多级动画效果菜单代码
Sep 06 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
Nov 30 Javascript
JavaScript类型系统之正则表达式
Jan 05 Javascript
javascript类型系统 Array对象学习笔记
Jan 09 Javascript
vue-cli+webpack项目 修改项目名称的方法
Feb 28 Javascript
JavaScript实现更换背景图片
Oct 18 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 #Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 #Javascript
js实现通用的微信分享组件示例
Mar 10 #Javascript
jquery基础教程之数组使用详解
Mar 10 #Javascript
查询json的数据结构的8种方式简介
Mar 10 #Javascript
js 3秒后跳转页面的实现代码
Mar 10 #Javascript
php is_numberic函数造成的SQL注入漏洞
Mar 10 #Javascript
You might like
PHP中的CMS的涵义
2007/03/11 PHP
Wordpress php 分页代码
2009/10/21 PHP
php网上商城购物车设计代码分享
2012/02/15 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
nodejs基础知识
2017/02/03 NodeJs
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
原生JavaScript实现随机点名表
2021/01/14 Javascript
利用Python如何生成随机密码
2016/04/20 Python
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
什么是规则表达式
2012/05/03 面试题
质检部职责
2013/12/28 职场文书
应届生求职信
2014/05/31 职场文书
党员十八大心得体会
2014/09/12 职场文书
迎新生标语大全
2014/10/06 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js