2012-11-11 32 views
0
function loader_bar(msg,msgtype) { 


     switch (msgtype) { 
     case 'error': 
      $class = 'bar_error topbar' 
      break; 
     case 'success': 
      $class = 'bar_success topbar' 
      break; 
     case 'working': 
      $class = 'topbar' 
      msg = 'Spinner ' + msg 
      break; 
     default: 
      $class = 'topbar' 
      msg = msg 
      break; 
     } 

    if ($("#loader_bar").is(":visible")) { 
     $("#loader_bar").removeClass() 
     clearInterval(int); 
     $("#loader_bar").html(msg).addClass($class); 
    } else { 
     $('<div />', { "class": $class, html: msg, "id" : "loader_bar" }).prependTo("body").slideDown('fast');  
    } 

     myTimer = setInterval($("#loader_bar").slideUp('fast'), 10000); 
} 

现在,它出现一瞬间,然后去?我该如何解决这个jQuery消息栏功能?

基本上我想要一个酒吧,当我打电话时出现一个特定的类,10秒后我想要它slideUp但是如果它在超时之前从另一个函数再次调用。我想重置计时器和更改消息/班,并保持了10秒钟......

回答

1
myTimer = setInterval($("#loader_bar").slideUp('fast'), 10000); 

应该

myTimer = setInterval(function() { $("#loader_bar").slideUp('fast'); }, 10000); 

运行必须是一个函数的声明,否则会立即被调用。

+2

另外,我看不出为什么这应该是'setInterval()'而不是'setTimeout()'。一旦'.slideUp()'被调用,就没有理由再次调用它。 – jfriend00