0

在 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 菜鸟,所以我试图让它工作......让我们说我的文件准备好了:

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

同样的问题...

4

3 回答 3

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);
}​
于 2012-04-25T13:58:15.360 回答
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();
于 2012-04-25T13:59:40.427 回答
0

这应该工作->

var stopT=false;

var timerHdl=null; $(document).ready(function () { setTimeout(function(){stopT=true;}, 10000); blink();

}); 函数闪烁(){
if(stopT===true){clearTimeout(timerHdl);return;} timerHdl = setTimeout(function(){$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blink)}, 100); }

​</p>

于 2012-04-25T14:09:49.217 回答