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 相关文章推荐
input 高级限制级用法
Mar 26 Javascript
JavaScript 学习笔记(十二) dom
Jan 21 Javascript
有关于JS构造函数的重载和工厂方法
Apr 07 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
Jun 30 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
Aug 12 Javascript
Javascript检查图片大小不要让大图片撑破页面
Nov 04 Javascript
学习JavaScript编程语言的8张思维导图分享
Mar 27 Javascript
JavaScript中使用Math.PI圆周率属性的方法
Jun 14 Javascript
JavaScript实现cookie的写入、读取、删除功能
Nov 05 Javascript
SpringMVC返回json数据的三种方式
Dec 10 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
Oct 11 Javascript
bootstrap table sum总数量统计实现方法
Oct 29 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 高手之路(三)
2006/10/09 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
php并发加锁示例
2016/10/17 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
Python 从attribute到property详解
2020/03/05 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
秋天的怀念教学反思
2014/04/28 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
党性修养心得体会2016
2016/01/21 职场文书
同学会演讲稿
2019/04/02 职场文书
《三国志》赏析
2019/08/27 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
如何Tomcat中使用ipv6地址
2022/05/06 Servers