2017-01-14 37 views
0

我已經做了一些搜索和nothings給我一個答案在這裏。jQuery如果在setTimeout函數內部塊不起作用

在我正在構建的一個頁面上,我讓它在主區域中登錄一次(它的全部內容都在一個頁面中,每個鏈接只會引入一個隱藏的div)。

我有一個管理區,我想,直到您登錄爲管理員要隱藏的按鈕,

我在我的PHP已經設置,如果以管理員身份登錄成功,它創建了一個隱藏如果您是管理員,則選中該複選框,如果不是管理員,則不選中。

$("#adminlogin").submit(function() { 
    setTimeout (function() { 
     if ($('#admintrue').is(':checked')){ 
      $('#adminbutton').show('fade',500); 
     } else { 
      $('#adminbutton').hide('fade',500); 
     } 
    }, 1000); 
}); 

我試圖做到這一點(因爲jQuery的作用比PHP快),但是從我所看到的,你不能把一個if查詢setTimeout函數裏面。

有沒有人有辦法實現這一目標?

謝謝

+1

它更多l可能與這是在'submit'處理程序中有關。一旦你提交了一個頁面,瀏覽器就會重定向到「action」的形式......沒有像setTimeout那樣的異步代碼會阻止它。 –

+0

問題還不清楚。一切工作在setTimeout –

+1

@RanjitSingh - 不是如果它在一個'submit'事件處理程序 - 它永遠不會運行,如果表單提交 –

回答

0

試試這個來代替:

... 
if($('#admintrue:checked')) { 
... 

此外,您還可以使用,而不是隱藏複選框類/ ID,它可以檢查如下:

... 
if($('#myID')) { 
... 

... 
if($('#myElement').hasClass('my-class')) { 
... 
+0

的:檢查檢查是工作,但我喜歡你的最小化的方法代碼。 Jaromanda在其他評論中擊中了頭部,這是因爲表單提交刷新了頁面並有效地停止了事件處理程序。 –

相關問題