2014-02-12 52 views
0

我的jQuery代碼如下所示之前隱藏:的JQuery等到元素已持續

if($('#LoginFormError').is(':visible'))$('#LoginFormError').slideUp(); 
//Check inputs and run ajax 
if(CheckInput('#LoginUsername') && CheckInput('#LoginPassword')){ 
    $('#LoginSubmit').attr('disabled', true); 
    $.ajax({ 
     (..ajax stuf..) 
    }); 
}else{ 
    $('#LoginFormError').html("Please fill in everything."); 
    $('#LoginFormError').slideDown(); 
} 

對於這樣做的目的,如果字段填入CheckInput返回true

我想什麼do是,如果那麼#LoginFormError是可見的,腳本隱藏該元素,然後運行檢查程序。問題是儘管#LoginFormError可能根本不可見,所以我不能將所有內容都放入SlideUp函數的回調函中,儘管我認爲我不能。

+0

你能更好地解釋爲什麼你不能把它放在一個回調?如果該元素已被隱藏,則立即調用「slideUp」回調。 –

回答

2

由於回調將始終被調用(即使該元素已被隱藏),因此不需要檢查。只要把一切都在回調:

$('#LoginFormError').slideUp(400, function{ 
     //Check inputs and run ajax 
     if(CheckInput('#LoginUsername') && CheckInput('#LoginPassword')){ 
      $('#LoginSubmit').attr('disabled', true); 
      $.ajax({ 
       (..ajax stuf..) 
      }); 
     }else{ 
      $('#LoginFormError').html("Please fill in everything."); 
      $('#LoginFormError').slideDown(); 
     } 
    } 
);