settimeout到按钮的闪烁

时间:2012-04-25 13:54:18

标签: jquery

在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)中,它会抛出某种异常......

编辑2

如果我把它全部放在准备好的文件中:

 $(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);
    }​

    });

然后在开发人员工具中,它显示未捕获的语法错误:意外的令牌非法。

编辑3

在调用之前我试着把它放在顶部:

$(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();
        }
});

同样的问题......

3 个答案:

答案 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); }