学习JQuery写的第一个插件_屏幕滚动
2008-09-18 17:24
513 查看
这个插件看起来是很简单的,但是setTimeout这个函数不小心就用不好。
jQuery.fn.scrollScreen=function(t){
var time;
//如果没有设置时间则默认设置为3秒
if(t==undefined){
time=3000;
}
else
time=t;
return this.each(function(){
var $this=$(this);
var timeout;
var inProgress = false;
var timer=function(){
//上锁
if(!inProgress){
inProgress = true;
//清空计数器堆栈,防止堆栈中存在多个计数器而出现“时间跳跃”
timeout = false;
var $first=$this.children(":first");
$first.fadeOut(1000,function(){
$this.append($first);
var $last=$this.children(":last");
$last.show();
//处理完毕,解锁
inProgress=false;
});
if(!timeout)
timeout=setTimeout(timer,time);
}
};
timeout=setTimeout(timer,time);
$this.hover(function(){
//停止计数,清空堆栈
clearTimeout(timeout);
timeout = false;
},function(){
if (!timeout) {
timeout = setTimeout(timer, 500);
}
});
});
}
jQuery.fn.scrollScreen=function(t){
var time;
//如果没有设置时间则默认设置为3秒
if(t==undefined){
time=3000;
}
else
time=t;
return this.each(function(){
var $this=$(this);
var timeout;
var inProgress = false;
var timer=function(){
//上锁
if(!inProgress){
inProgress = true;
//清空计数器堆栈,防止堆栈中存在多个计数器而出现“时间跳跃”
timeout = false;
var $first=$this.children(":first");
$first.fadeOut(1000,function(){
$this.append($first);
var $last=$this.children(":last");
$last.show();
//处理完毕,解锁
inProgress=false;
});
if(!timeout)
timeout=setTimeout(timer,time);
}
};
timeout=setTimeout(timer,time);
$this.hover(function(){
//停止计数,清空堆栈
clearTimeout(timeout);
timeout = false;
},function(){
if (!timeout) {
timeout = setTimeout(timer, 500);
}
});
});
}
相关文章推荐
- 学习使用jquery iScroll.js移动端滚动条插件
- jQuery学习之:jqGird表格插件,第一个demo
- jquery插件开发学习笔记(六)——页面平滑滚动
- jQuery插件编写学习+实例——无限滚动
- (转)jQuery插件编写学习+实例——无限滚动
- jQuery学习之:jqGrid表格插件——第一个Demo
- jQuery学习之:jqGrid表格插件——第一个Demo
- jquery插件开发学习笔记(七)——页面平滑滚动改进
- 学习使用jquery iScroll.js移动端滚动条插件
- jQuery学习之:jqGrid表格插件——第一个Demo
- 学习--jquery 自定义插件 页面按照模块 垂直滚动
- 导航菜单固定头部跟随屏幕滚动jQuery插件
- jquery插件 - 跟随屏幕滚动的层
- 【学习拾遗】Jquery(二)--插件
- 基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
- jQuery高性能自己定义滚动栏美化插件
- 20151213Jquery学习笔记--插件
- 一款很好用的jquery图片滚动插件-jquery.flexslider.js
- 学习制作第一个 openfire 插件