jQuery中的控件对象闪烁
Blinking control object in jQuery
我正在尝试使一个对象开始/停止闪烁(对于jquery中的对象,使用fadeIn((和fadeOut((。我已经有了一个方法blink((,它可以让元素闪烁一次,而且它很有效,但我正试图让它再次闪烁,作为对fadeOut((的回调,似乎无法在不出现堆栈溢出的情况下实现它。这就是我目前所掌握的:
Indicator = function(str) {
this.el= $(str);
this.blink = function(){
var callback = function() {
return function(){
console.log(this.el)
this.blink();
}.apply(this);
//if (!this.stopped)
//this.blink();
}.apply(this);
this.el.fadeIn(200).delay(200).fadeOut(200,callback);
}
this.stopped = false;
this.stop = function() { this.stopped = true; }
}
function start(){
indicator =new Indicator('#indicator p');
indicator.blink();
}
(我知道我的苹果((一团糟,对不起(
您已经创建了显式的无休止递归。您调用的是调用blink
的fadeOut
,调用callback
的blink
。我建议你用setInterval重写这个函数,比如:
this.fadeDuration = 200;
this.blinkIntervalRef = null;
this.blink = function(){
this.blinkIntervalRef = setInterval(
function(){this.doBlink();},
this.fadeDuration*3
);
}
this.stop = function() {clearInterval(this.blinkIntervalRef );}
this.doBlink = function(){
//this is just shortcut, not to make horizontal scroll
var interval = this.blinkIntervalRef;
this.el.fadeIn(interval).delay(interval).fadeOut(interval);
}
请注意,它没有经过测试,但至少它会给你一个方向。
更新:这是一个工作示例,但需要一些调试和时间跨度调整:
Indicator = function(str) {
this.el= $(str);
this.fadeDuration = 100;
this.blinkIntervalRef = null;
this.doBlink = function(){
//this is just shortcut, not to make horizontal scroll
var interval = this.blinkIntervalRef;
this.el.fadeIn(interval).delay(interval).fadeOut(interval);
}
this.blink = function(){
var ctx = this;
this.blinkIntervalRef = setInterval(function(){ctx.doBlink();},this.fadeDuration*4);
}
this.stop = function() {clearInterval(this.blinkIntervalRef);}
}
function start(){
indicator = new Indicator('#indicator p');
indicator.blink();
}
$(document).ready(function(){start();});
这就是我曾经做过的类似事情:
function initializeBlink()
{
$('#indicator p').fadeToggle('slow', fadeToggleBlinker);
}
function fadeToggleBlinker()
{
var timeout = 2000;
if(this.style.display == 'none')
timeout = 1000;
var tmp = $(this);
window.setTimeout(function(){tmp.fadeToggle('slow', fadeToggleBlinker)}, timeout);
}
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- 画布对象闪烁
- jQuery中的控件对象闪烁
- 用Flash对象替换图像而不闪烁
- 从浏览器中调整flash对象的大小而不闪烁