2011-01-05 32 views
0

我不確定我是否正確診斷出這個問題。如何讓jquery重新使用AJAX重新加載元素標識?

我有一個jQuery對話框,彈出另一個jQuery對話框。一旦一切似乎都奏效,當我彈出內部對話框 時。當我關閉兩個對話並重新打開它們時, 內部對話框上的「保存」按鈕無法正常工作 - 特別是它不會關閉對話框。

我認爲正在發生的:使用相同的DOM的id爲在第一時間爲第二次對話的內容是通過AJAX重載 第二次,當jQuery的試圖關閉對話 它會嘗試關閉「老「不再存在的對話(或者至少不可見)。

我對不對?如果是的話如何讓jquery忘記舊元素並使用新元素?

如果你想看到自己的問題:

  1. 轉到http://ibidreview.appspot.com/Teach/Edit?eid=1DemoE&owner=
  2. 點擊第一個「變化的問題」按鈕。應顯示第一個對話框。
  3. 點擊「html」僞鏈接。應顯示第二個對話框。
  4. 單擊內部對話框上的「保存」。內部對話框應關閉
  5. 單擊第一個對話框上的「更改」。首先對話框應該關閉。
  6. 現在重複步驟2,3,4並注意到在步驟4中內部對話框沒有關閉。

我會停止嘗試修復這一段時間,所以這些步驟將工作相同...在此先感謝!

+0

你給了我們一個本地主機鏈接... – 2011-01-05 16:18:20

+0

你怎麼申報事件點擊Save按鈕?使用jQuery使用.click()? 。 – Cesar 2011-01-05 16:45:11

+0

塞薩爾:按鈕聲明如下所示:$( 「#popDiv_FullTargetInput」)對話框({ 的AutoOpen:假 ,按鈕:{ 「保存」:onSave_FullTargetInput} ,minWidth:300 ,寬度:800 }); – 2011-01-05 18:22:46

回答

1

看看live()事件處理程序。這將確保元素在被銷燬或重新創建後仍然會觸發事件。 http://api.jquery.com/live/

使用這樣的事情:

$(button).live('click', function() { 
    $(form).save(); //save the form 
    $(menu).close(); //close the menu 
}); 
+0

我很困惑這個答案。我不知道如何識別按鈕,因爲它是由jQueryUI創建的,就像$(「#popDiv_FullTargetInput」)。對話框({ ,寬度:800 }); - 但是我會看看現場活動處理程序,看看我能否理解它。 – 2011-01-05 18:26:09