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 相关文章推荐
IE6/7/8/9不支持exec的简写方式
May 25 Javascript
分页栏的web标准实现
Nov 01 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
Jq通过td获取同行其它列td的方法
Oct 05 Javascript
100行代码理解和分析vue2.0响应式架构
Mar 09 Javascript
关于vue.js过渡css类名的理解(推荐)
Apr 10 Javascript
vue router下的html5 history在iis服务器上的设置方法
Oct 18 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 Javascript
详解用async/await来处理异步
Aug 28 Javascript
JS实现动态无缝轮播
Jan 11 Javascript
JS实现可视化音频效果的实例代码
Jan 16 Javascript
js实现详情页放大镜效果
Oct 28 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的错误信息
2006/10/09 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
php继承的一个应用
2011/09/06 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
vue-video-player 断点续播的实现
2021/02/01 Vue.js
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
python3 shelve模块的详解
2017/07/08 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
Python执行时间的几种计算方法
2020/07/31 Python
python使用列表的最佳方案
2020/08/12 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
大学生求职自荐信
2013/12/12 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
个人收入证明模板
2014/09/18 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
出国导师推荐信
2015/03/25 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
vue+element ui实现锚点定位
2021/06/29 Vue.js
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
Python中的datetime包与time包包和模块详情
2022/02/28 Python
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang