在jquery中,我有一个具有淡化效果的按钮:
function blinky() {
$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blinky);
}
这会产生一个很好的眨眼效果,但我只希望眨眼效果持续10秒。
我希望它只闪烁10秒......我可以将setTimeout()
应用于此吗?我尝试像这样应用setTimeout:
function blinky() {
setTimeout($('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blinky), 100);
}
但这似乎不起作用。
我是一个jquery noob所以我试图让这个工作...... 让我们说这是我的文件准备好了:
$(document).ready(function () {
if ($('#StatusContent_ddlStatus').val() == "Not Submitted" && $("#LineItemContent_gvLineItems tr").length > 0) {
blink();
}
});
var count = 0;
function blink() {
if (++count < 10)
$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blink);
}
在开发人员工具(chrome)中,它会抛出某种异常......
如果我把它全部放在准备好的文件中:
$(document).ready(function () {
if ($('#StatusContent_ddlStatus').val() == "Not Submitted" && $("#LineItemContent_gvLineItems tr").length > 0) {
blink();
}
var count = 0;
function blink() {
if (++count < 10)
$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blink);
}
});
然后在开发人员工具中,它显示未捕获的语法错误:意外的令牌非法。
在调用之前我试着把它放在顶部:
$(document).ready(function () {
var count = 0;
var f = 0;
function blink() {
if (++count < 10)
$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blink);
}
if ($('#StatusContent_ddlStatus').val() == "Not Submitted" && $("#LineItemContent_gvLineItems tr").length > 0) {
blink();
}
});
同样的问题......
答案 0 :(得分:2)
它可以是更简单,只需保存对blink
函数的调用次数:
var count = 0;
function blinky() {
if (++count < 10)
$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blinky);
}
或有时间限制:
var startDate = new Date().getTime();
function blinky() {
if (new Date().getTime() - startDate < 10000)
$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blinky);
}
答案 1 :(得分:0)
尝试标记时间并对其进行检查,如:
var markTime = new Date().getTime();
function blinky() {
$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, function() {
if(new Date().getTime() < (markTime + 10000)) blinky();
});
}
blinky();
答案 2 :(得分:0)
这应该有效 - &gt;
var stopT=false;
var timerHdl = null; $(document).ready(function(){ setTimeout(function(){stopT = true;},10000); 闪烁();
});
功能闪烁(){
if(stopT === true){clearTimeout(timerHdl); return;} timerHdl = setTimeout(function(){$('#ButtonContent_btnSubmit')。delay(100).fadeTo(100,0.5).delay(100).fadeTo(100,1,blink)},100);
}