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 动态添加事件代码
Nov 30 Javascript
jQuery创建插件的代码分析
Apr 14 Javascript
基于jQuery的图片左右无缝滚动插件
May 23 Javascript
8个实用的jQuery技巧
Mar 04 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
js获取及判断键盘按键的方法
Dec 01 Javascript
jquery实现自适应banner焦点图
Feb 16 Javascript
Vue表单类的父子组件数据传递示例
May 03 Javascript
使用javascript做时间倒数读秒功能的实例
Jan 23 Javascript
浅谈vue限制文本框输入数字的正确姿势
Sep 02 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
Sep 20 Javascript
Vue中axios拦截器如何单独配置token
Dec 27 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函数解决SQL injection
2006/10/09 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
Linux下Python获取IP地址的代码
2014/11/30 Python
介绍Python中的__future__模块
2015/04/27 Python
详解django.contirb.auth-认证
2018/07/16 Python
django celery redis使用具体实践
2019/04/08 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
flask开启多线程的具体方法
2020/08/02 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
汽车技术服务英文求职信范文
2014/01/02 职场文书
个人简历自我评价
2014/01/06 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
学校消防安全责任书
2014/07/23 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
住房抵押登记委托书
2014/09/27 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
新娘婚礼致辞
2015/07/27 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
利用Apache Common将java对象池化的问题
2022/06/16 Servers