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中自动切换焦点实现代码
Dec 15 Javascript
提升PHP安全:8个必须修改的PHP默认配置
Nov 17 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
jquery利用拖拽方式在图片上添加热链接
Nov 24 Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 Javascript
JavaScript字符串检索字符的方法
Jun 23 Javascript
iview日期控件,双向绑定日期格式的方法
Mar 15 Javascript
玩转Koa之核心原理分析
Dec 29 Javascript
使vue实现jQuery调用的两种方法
May 12 jQuery
JS 自执行函数原理及用法
Aug 05 Javascript
Vue 打包体积优化方案小结
May 20 Javascript
Vue两种组件类型:递归组件和动态组件的用法
Aug 06 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写UltraEdit插件脚本实现方法
2011/12/26 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
PHP文件上传类实例详解
2016/04/08 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
js验证上传图片的方法
2015/05/12 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
Vue ​v-model相关知识总结
2021/01/28 Vue.js
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
适用于所有创业者的创业计划书
2014/02/05 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
学校安全管理责任书
2014/07/23 职场文书
2014年药店工作总结
2014/11/20 职场文书
2016新年慰问信范文
2015/03/25 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
电力安全学习心得体会
2016/01/18 职场文书
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers