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 相关文章推荐
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
Nov 30 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
May 03 Javascript
深入理解javascript中的立即执行函数(function(){…})()
Jun 12 Javascript
JS实现超炫网页烟花动画效果的方法
Mar 02 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
Apr 06 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
js实现一个链接打开两个链接地址的方法
May 12 Javascript
BootStrap的JS插件之轮播效果案例详解
May 16 Javascript
Vue框架之goods组件开发详解
Jan 25 Javascript
vue集成百度UEditor富文本编辑器使用教程
Sep 21 Javascript
javascript中的闭包概念与用法实践分析
Jul 26 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
Jul 22 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
咖啡的种类和口感
2021/03/03 新手入门
adodb与adodb_lite之比较
2006/12/31 PHP
PHP开发中常用的8个小技巧
2008/08/27 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
解读python如何实现决策树算法
2018/10/11 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
ORACLE第二个十问
2013/12/14 面试题
学校消防安全制度
2014/01/30 职场文书
2014年电工工作总结
2014/11/20 职场文书
投标承诺函格式
2015/01/21 职场文书
深入理解pytorch库的dockerfile
2022/06/10 Python