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 相关文章推荐
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
Mar 24 Javascript
Javascript Jquery 遍历Json的实现代码
Mar 31 Javascript
JS基于面向对象实现的放烟花效果
May 07 Javascript
js实现的星星评分功能函数
Dec 09 Javascript
AngularJS转换响应内容
Jan 27 Javascript
Javascript的动态增加类的实现方法
Oct 20 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
js图片放大镜效果实现方法详解
Oct 28 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
Dec 11 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
Dec 23 Javascript
JavaScript常用工具函数大全
May 06 Javascript
JS实现百度搜索框
Feb 25 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP中常用的转义函数
2014/02/28 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
详解Node 定时器
2018/02/26 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
python中shell执行知识点
2020/05/06 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
爱情寄语大全
2014/04/09 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
婚礼父母致辞
2015/07/28 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
Pygame Time时间控制的具体使用详解
2021/11/17 Python