2011-03-04 58 views
1

我希望有人可以幫助,因爲我在我的智慧結束與此。我想要做的是這個。jQueryUI模態公開事件和MVC.NET導致錯誤「.dialog不是一個函數」

  1. 「可拖動」項目被放入一個「可投放」區域(這個工程)
  2. 此職位的項目我的控制器的ID返回項目的類型是(這工作)
  3. 我將返回的項目名稱傳遞給打開模式的函數,並根據特定項目在模態中呈現局部視圖。

最後一點是問題所在。上述所有步驟都可以正常工作,模式會彈出,部分視圖會呈現給模態。但關閉對話框的按鈕會拋出錯誤「.dialog不是函數」,並且在使用角落中的「x」關閉模式後,嘗試打開模式將不會發生類似的錯誤。

下面是我正在努力嘗試使此工作的示例。

$(function() { 
     $('.draggable').draggable({ containment: '#imageboundry', revert: 'valid' }); 
     $('#droppable').droppable({ 
      drop: function (event, ui) { 
       $.ajax({ 
        type: "POST", 
        url: '/Home/AddToCart/' + $(ui.draggable).attr("id"), 
        success: function (data) { 
         getItemType(data); 
        } 
       }); 
      } 
     }); 
    }); 

    function getItemType(itemName) { 
     $('#dialogs').dialog({ 
      open: function() { 
       $(this).load("AdditionalContent", { itemName: itemName }, function() { 
        alert("This happened"); 
       }); 
      }, 
      modal: true, 
      resizable: false, 
      title: itemName, 
      width: 400, 
      autoOpen: false, 
      buttons: { 
       "Confirm": function() { 
        $(this).dialog('close'); 
       } 
      } 
     }); 
    } 

這是我的控制器,它返回了局部視圖模態

public PartialViewResult AdditionalContent(string itemName) 
    { 

     return PartialView("_" + itemName + "Attributes"); 
    } 

關閉按鈕的工作原理,一旦我拿出open: function() { ... }位,我可以一次又一次地重新打開該模式,但一旦我把這回錯誤被拋出。這顯然是原因,但不能爲我的生活找出原因。

在此先感謝您的幫助,並對很長的帖子感到抱歉。

UPDATE:

我已經嘗試在初始化中的document.ready模式,並從我的「拖放」功能的第一主函數調用它。從這樣做我已經縮小到這行代碼從我的控制器加載部分視圖。沒有這條線,功能就起作用。任何關於這個問題的想法。

$(this).load("AdditionalContent", { itemName: itemName } 
+0

@馬克OB:我要再次創建對話框,並重新填充的內容(使用'.load ''在'open'函數之外。我發現當小部件在一個元素上被多次調用時會發生奇怪的事情。你嘗試過這樣的戰略嗎? – 2011-03-05 03:01:30

+0

@Andrew Whitaker:我嘗試了一些類似於在$(document).ready中初始化模態的東西。我沒有嘗試填充open函數以外的內容。當我回家並讓你知道的時候會試試看。感謝您的快速回復 – 2011-03-05 12:23:20

+0

@MarkOB:查看更新 - 您是否看到過像Firebug這樣的檢測工具的結果?你會得到一個服務器錯誤?例如,MVC是否有可能找不到局部視圖? – 2011-03-05 19:43:59

回答

1

我想通了。包含在部分視圖中的是對創建視圖時自動添加的jQuery庫的第二次調用。另外,它是版本1.4.4,而我在_Layout頁面中直接使用了Google的1.5.1版本。由於兩個版本之間存在衝突,第二個jQuery庫顯然打破了功能。直到我看到FireBug控制檯,我才注意到1.4.4庫的第二次加載。

感謝所有您的幫助,感覺好像有點白癡,但教訓瞭解到.....現在

-2

可以試試這個,但我不知道

$('#dialogs').dialog({ 
    var self = this; 
      open: function() { 
       $(self).load("AdditionalContent", { itemName: itemName }, function() { 
        alert("This happened"); 
       }); 
      }, 
+1

這不起作用。你不能在對象文字中聲明一個像這樣的變量。 – 2011-03-05 03:07:28

+0

我明白你要去哪裏了,但即使通過在$('#dialogs')中使用DIV的實際名稱,錯誤依然會呈現出來。 – 2011-03-05 12:25:13

相關問題