JQuery 插件制作实践 xMarquee插件V1.0


Posted in Javascript onApril 02, 2010

插件需求
1,向左或者右移动列表中的元素.(注,上下方向也一样的,用css控制列表元素float的方向即可~)
2,鼠标移动到某个元素上时,改元素突出显示(css控制),播放器停止滚动。移开后继续跑马。。
3,可选左右手工导航按钮。
JQuery 插件制作实践 xMarquee插件V1.0 
实现原理
移动列表末尾元素到第一个元素前面即可。
将来的扩展(以后用到的话再看吧)
多个元素同时移动;移动时的效果;移动后的回调函数;(注:利用移动后的回调函数可以方便做一个相册插件,有兴趣的自己写下)。做开发的人要记住一句话:Do the simplest thing that could possibly work!做最简单可用的东东,千万别过分设计。
xMarquee API说明
1,dom规约
看下面源码处~2,css示例
看下面源码处~
3,主方法调用

<script type="text/javascript"> 
//<![CDATA[ 
$("#wk_featured_items").xMarquee({}); 
//]]> 
</script>

插件源码
; (function($) { 
// Private functions. 
var p = {}; 
p.stop = function(evt) { if (evt) { $(this).addClass(p._opts.on); }; window.clearInterval(p._intervalID); }; 
p.slide = function() { 
if (p._opts.dir == 1) { 
p._i.filter(":last").hide().fadeIn(p._opts.fadein).prependTo(p._t); 
} else { 
if (p._opts.vnum < p._cnt) { 
p._i.filter(":first").fadeOut(p._opts.fadeout).appendTo(p._t); 
p._i.filter(":eq(" + p._opts.vnum + ")").fadeIn(p._opts.fadein); 
} else { 
p._i.filter(":first").hide().appendTo(p._t).fadeIn(p._opts.fadein); 
}; 
}; 
//refresh 
p._i = $(p._opts.i, p._t); 
//visibility 
p._i.filter(":gt(" + (p._opts.vnum - 1) + ")").hide(); 
}; //slide 
p.go = function(evt) { 
p.stop(); 
if (evt) { 
$(this).removeClass(p._opts.on); 
}; 
p._intervalID = window.setInterval(function() { p.slide(); }, p._opts.interval); 
}; //go 
//main plugin body 
$.fn.xMarquee = function(options) { 
// Set the options. 
options = $.extend({}, $.fn.xMarquee.defaults, options); 
p._opts = options; 
// Go through the matched elements and return the jQuery object. 
return this.each(function() { 
//NOTE:if wanna support multiple marquee instance,we should cache private variable via $(this).data("v",v) 
p._t = this; //marquee target; 
//silde items 
p._i = $(p._opts.i, p._t); 
p._cnt = p._i.size(); 
p._intervalID = null; 
//hide unwanted items 
p._i.filter(":gt(" + (p._opts.vnum - 1) + ")").hide(); 
p._i.hover(p.stop, p.go); 
//buttons registeration 
$(p._opts.btn0).click(function(evt) { p._opts.dir = 0; p.stop(); p.slide(); return false; }).mouseout(p.go); 
$(p._opts.btn1).click(function(evt) { p._opts.dir = 1; p.stop(); p.slide(); return false; }).mouseout(p.go); 
//trigger the slidebox 
p.go(); 
}); 
}; 
// Public defaults. 
$.fn.xMarquee.defaults = { 
on: 'cur', 
i: 'li', //slide items css selector 
interval: 5000, 
fadein: 300, 
fadeout: 200, 
vnum: 4, //visible marquee items 
dir: 1, //marquee direaction.1=right;0=left; 
btn0: '.prev', //prev button 
btn1: '.next'//next button 
}; 
})(jQuery);

打包下载地址
Javascript 相关文章推荐
js的闭包的一个示例说明
Nov 18 Javascript
删除javascript中注释语句的正则表达式
Jun 11 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
Feb 06 Javascript
轻松实现js弹框显示选项
Sep 13 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
js使用xml数据载体实现城市省份二级联动效果
Nov 08 Javascript
使用Vue动态生成form表单的实例代码
Apr 26 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 Javascript
JS实现旋转木马轮播图
Jan 01 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
Jan 26 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
Apr 02 #Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
Apr 01 #Javascript
初试jQuery EasyUI 使用介绍
Apr 01 #Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
Apr 01 #Javascript
基于jquery的获取mouse坐标插件的实现代码
Apr 01 #Javascript
Jquery+JSon 无刷新分页实现代码
Apr 01 #Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
Apr 01 #Javascript
You might like
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
JavaScript小技巧 2.5 则
2010/09/12 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
让python json encode datetime类型
2010/12/28 Python
Python实现合并字典的方法
2015/07/07 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
python 对象和json互相转换方法
2018/03/22 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
详解如何减少python内存的消耗
2019/08/09 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
德国网上花店:Valentins
2018/08/15 全球购物
美术第二课堂活动总结
2014/07/08 职场文书
2015新年寄语大全
2014/12/08 职场文书
导游词之晋城蟒河
2019/12/12 职场文书