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 相关文章推荐
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
基于JQuery的多标签实现代码
Sep 19 Javascript
JS求平均值的小例子
Nov 29 Javascript
一个JavaScript去除字符串末尾的空白实例代码
Sep 22 Javascript
javascript中innerText和innerHTML属性用法实例分析
May 13 Javascript
ionic 上拉菜单(ActionSheet)实例代码
Jun 06 Javascript
JavaScript判断微信浏览器实例代码
Jun 13 Javascript
AngularJS指令详解及示例代码
Aug 16 Javascript
原生js封装的一些jquery方法(详解)
Sep 20 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
Mar 15 Javascript
原生JS实现图片懒加载(lazyload)实例
Jun 13 Javascript
JavaScript实现音乐播放器
Aug 14 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
又拍云异步上传实例教程详解
2016/04/19 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python格式化css文件的方法
2015/03/10 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
Python查看微信撤回消息代码
2018/06/07 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
pandas参数设置的实用小技巧
2020/08/23 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
区域销售经理岗位职责
2013/12/10 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
艺术教育实施方案
2014/05/03 职场文书
个人工作表现评价材料
2014/09/21 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
安全教育主题班会总结
2015/08/14 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技
python中validators库的使用方法详解
2022/09/23 Python