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 + Ajax调用webService实例代码(asp.net)
Aug 27 Javascript
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
jQuery实现简单的日期输入格式化控件
Mar 12 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
Dec 08 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 Javascript
form表单序列化详解(推荐)
Aug 15 Javascript
phantomjs导出html到pdf的方法总结
Oct 19 Javascript
Express系列之multer上传的使用
Oct 27 Javascript
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
Vue中通过属性绑定为元素绑定style行内样式的实例代码
Apr 30 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
页面乱码问题的根源及其分析
2013/08/09 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
php实现文件下载实例分享
2014/06/02 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
js 获取时间间隔实现代码
2014/05/12 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
python类定义的讲解
2013/11/01 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
用Python shell简化开发
2018/08/08 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
如何在django中实现分页功能
2020/04/22 Python
大学生职业规划书的范本
2014/02/18 职场文书
会计自荐信范文
2014/03/09 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
慰问信格式规范
2015/03/23 职场文书
求职推荐信范文
2015/03/27 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
解析redis hash应用场景和常用命令
2021/08/04 Redis
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技