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 相关文章推荐
自适应图片大小的弹出窗口
Jul 27 Javascript
Javascript入门学习资料收集整理篇
Jul 06 Javascript
JS文本框不能输入空格验证方法
Mar 19 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
jQuery实现不断闪烁文字的方法
May 15 Javascript
js+canvas绘制矩形的方法
Jan 28 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
Feb 20 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 Javascript
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
vue 左滑删除功能的示例代码
Jan 28 Javascript
js实现圆形菜单选择器
Dec 03 Javascript
vue首次渲染全过程
Apr 21 Vue.js
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遍历替换目录下文件指定内容的方法
2016/11/10 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
Vue实现多标签选择器
2019/11/28 Javascript
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python绘制简单折线图代码示例
2017/12/19 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
公司行政经理岗位职责
2013/12/24 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
联欢晚会主持词
2014/03/25 职场文书
企业诚信承诺书
2014/05/23 职场文书
会计演讲稿范文
2014/05/23 职场文书
社区志愿者培训方案
2014/06/10 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python