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 对Select的操作备忘记录
Jul 04 Javascript
Javascript 函数parseInt()转换时出现bug问题
May 20 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
Dec 16 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
Aug 24 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
Aug 08 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
详解基于Vue的支持数据双向绑定的select组件
Sep 02 Javascript
微信小程序基于高德地图查找位置并显示文字
Oct 30 Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 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 explode()函数用法、切分字符串
2012/10/03 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
laravel学习教程之存取器
2016/07/30 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
google广告之另类js调用实现代码
2020/08/22 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
利用nohup来开启python文件的方法
2019/01/14 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
销售副总经理岗位职责
2013/12/11 职场文书
区三好学生主要事迹
2014/01/30 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
2014年租房协议书范本
2014/10/30 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
五一劳动节慰问信
2015/02/14 职场文书
第一书记观后感
2015/06/08 职场文书
歌舞青春观后感
2015/06/10 职场文书
投资入股协议书
2016/03/22 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技