2011-05-17 54 views
1

這似乎是一個常見主題,但我沒有看到任何人發佈此特定版本。在按鈕操作中帶回調的JQuery UI對話框失敗第二個對話框打開

<script> 
$(document).ready(function() { 
    $("#somebutton").click(function() { 
     $.get("someurl", function(data){ 
      $("#PartsDialogDiv").html(data); 
      $("#PartsDialogDiv").dialog("open"); 
     }); 
    }); 


    $("#PartsDialogDiv").dialog({ 
      autoOpen: false, 
      width: 600, 
      resizable: false, 
      modal: true, 
      buttons: { 
       "Use Part": function() { 
        $.get("someurl", function(data){ 
         $("#AnotherDIV").html(data); 
        }); 
        $(this).dialog("close"); 
       }, 
       "Cancel": function() { 
        $(this).dialog("close"); 
       } 
      } 
    }); 
}); 
</script> 
<div id="PartsDialogDiv"></div> 
<div id="AnotherDIV"></div> 

當我按下調用做了「使用部分」按鈕動作後.dialog(「開放」)是無法打開按鈕,會出現什麼情況。事實上,它指出:

Object doesn't support this property or method 

我有一種感覺,在「使用部分」的第一次新聞回調未能保持對PartsDialogDiv的dailog設置,它不再知道該DIV可以有jquery UI方法調用它。因爲它全部包裝在$(document).ready()中,所以我不確定如何處理將該div重新初始化爲對話框而不將其放入「使用零件」按鈕功能中。

有沒有人經歷過這個,並有如何處理這個好的提示或建議?

預先感謝您!

這是MVC3,但不完全確定它是相關的。

回答(因爲我不能回答我自己的問題,直到發佈8小時後): 我設法解決它。仁和喬治康明斯都讓我得出這樣的結論:我的部分觀點很糟糕。

在我的部分觀點我有這些腳本包括:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" 
     type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" 
     type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" 
     type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" 
     type="text/javascript"></script> 

他們是自動生成的(或我盲目地包括他們出於某種原因),而且不需要的。我刪除了它們,一切按預期工作。

非常感謝你的時間每個人!

+0

我不確定是否正確理解上下文。你能發佈調用.dialog(「open」)的代碼/點擊事件嗎? ?另外,調用.dialog(「close」);不會銷燬DOM元素,也不會銷燬該元素上的任何對話窗口小部件的實例。 – WhiskeyTangoFoxtrot 2011-05-17 18:20:29

+0

增加了額外的代碼。我知道你的意思是對話框(「關閉」)不會破壞DOM。但如果我刪除回調,它工作正常。如果我在按鈕動作中有回調,它會給出該錯誤,我假定回調刪除了對話框元素。或者其他的東西。 – Industry86 2011-05-17 18:25:27

回答

0

當發生「使用聲部」按鈕時,聲音變成「#PartsDialogDiv」。我們需要查看代碼以確保「//執行某些操作」,但您可以檢查該代碼並根據需要進行更改。具體而言,請查找對.destroy()或.disable()的調用。

+0

我只是在想這可能是問題所在。在這裏,我將更新問題以包含一些可能有助於澄清更多細節的其他細節。 – Industry86 2011-05-17 19:03:54

+1

同意。嘗試幫助某人時,這是一個常見問題。如果他們給了殘缺的代碼,這使我們很難提供幫助,特別是如果問題在代碼的殘缺部分。我可以說,雖然我的工作嚴格遵守CDA,所以當我尋求幫助時,我無法粘貼太多信息。但在這種情況下,這是至關重要的,因爲你在那裏有有效的代碼..所以這個問題必須在//做某些事情。 – WhiskeyTangoFoxtrot 2011-05-17 19:06:35

+0

確實如此。添加了一些通用代碼來表示更好。對不起,沒有把它放在首位。 – Industry86 2011-05-17 19:12:27