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实现代码
Oct 01 Javascript
把input初始值不写value的具体实现方法
Jul 04 Javascript
javascript中alert()与console.log()的区别
Aug 26 Javascript
bootstrap-treeview自定义双击事件实现方法
Jan 09 Javascript
详解Backbone.js框架中的模型Model与其集合collection
May 05 Javascript
JS异步文件分片断点上传的实现思路
Dec 25 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
Jun 01 Javascript
angularJs的ng-class切换class
Jun 23 Javascript
深度了解vue.js中hooks的相关知识
Jun 14 Javascript
layui的表单提交以及验证和修改弹框的实例
Sep 09 Javascript
深入浅析vue中cross-env的使用
Sep 12 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 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
php 分库分表hash算法
2009/11/12 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python交互界面的退出方法
2019/02/16 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
python通过http下载文件的方法详解
2019/07/26 Python
Django的Modelforms用法简介
2019/07/27 Python
python gdal安装与简单使用
2019/08/01 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
Python csv模块使用方法代码实例
2019/08/29 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
利用python进行文件操作
2020/12/04 Python
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
优秀员工自荐书范文
2013/12/08 职场文书
《识字五》教学反思
2014/03/01 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
故意伤害辩护词
2015/05/21 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书