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 相关文章推荐
JavaScrip单线程引擎工作原理分析
Sep 04 Javascript
javascript string字符串优化问题
Jul 31 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
Nov 06 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
JS+CSS实现仿新浪微博搜索框的方法
Feb 24 Javascript
JS动态改变浏览器标题的方法
Apr 06 Javascript
jQuery插件ajaxfileupload.js实现上传文件
Oct 23 Javascript
js canvas实现擦除效果示例代码
Apr 26 Javascript
详解小程序之简单登录注册表单验证
May 13 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
Sep 10 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
Jan 06 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
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
python多线程同步实例教程
2019/08/11 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
Python设计密码强度校验程序
2020/07/30 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
Python 内存管理机制全面分析
2021/01/16 Python
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
创业计划书的写作技巧及要点
2014/01/31 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
学习十八大宣传标语
2014/10/09 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL