2010-06-23 172 views
2

我在做一個Ajax GET一些HTML,然後通過填充一個div:jQuery對話框打開但不關閉!

$(theDiv).html(theHtml) 

此HTML包括一個按鈕(假設 「按鈕A」),其通過顯示一個jQuery的對話框:

$(selector).dialog({modal:true}); 

單擊「按鈕A​​」時,每次顯示對話框。但是,在對話框中,我已經包含了一個取消鏈接。取消鏈接火災:

$(selector).dialog("close") 

我注意到,大部分時間它的工作原理很棒。但是,如果在Ajax GET完成後立即快速單擊「按鈕A​​」,則取消鏈接將不會關閉對話框!對話框右上角的「X」按鈕始終有效,但取消按鈕是我正在努力的一個。

我已經嘗試了許多不同的事情來得到這個工作無濟於事。這發生在Firefox 3.5.9以及IE 7中。如果我使用Firebug並在.dialog('close');聲明之後放置斷點,則我注意到屏幕上的背景顏色從灰色變爲白色,但對話框保持打開狀態。我甚至試圖通過這樣做來強迫問題:

$(selector).css("display", "none"); 

無濟於事。

無論出於何種原因,Ajax GET第一次觸發時,我從來沒有這個問題......所以當我第一次訪問頁面並執行GET時,它每次都有效。但是,如果我仍然在頁面上繼續在DOM尚未加載時觸發GET,則它可能只有50%的時間。

我非常感謝任何人願意提供的幫助!

感謝,

安迪

+0

你在哪裏綁定此鏈接? – 2010-06-23 10:16:19

+0

鏈接沒有被jQuery綁定 - 我有一個onclick設置爲JavaScript函數,它調用$(selector).dialog({modal:true}); – Andy 2010-06-23 22:02:40

回答

0

這真的看起來像JavaScript是不準備在你點擊「取消」按鈕的那一刻。 你應該嘗試在ajax加載的頁面的document.ready事件上彈出警報,如果你能夠在警報發出之前點擊你的取消按鈕,那麼JavaScript只是比你慢。

只需添加類似的東西:

<script type="text/javascript"> 
$(function() { 
    alert('Javascript ready'); 
}); 
</script> 
0

您是否嘗試過與取消按鈕,然後使用按鈕A上打開命令提前創建時間的對話框:

<script> 
    $(document).ready(function() { 
     $(selector).dialog({ 
      modal: true, 
      autoOpen: false, 
      buttons: { 'Cancel': function() { $(this).dialog('close'); } } 
     }); 
    }); 
</script> 

內。然後你點擊即使按鈕A:

$(selector).dialog('open');