2012-02-27 40 views
0

我在彈出窗口中顯示了一個Ajax窗體,並顯示了覆蓋。我通過ajax提交彈出窗口,如果ajax調用已成功,我需要關閉覆蓋。Asp.Net MVC/jQuery工具覆蓋:如何在ajax中關閉它返回

這是目前我的JS代碼:

<script type="text/javascript"> 
    $(function() { 
     // Handle form submit ... 
     $("#AddVariableForm").live("submit", function (event) { 
      event.preventDefault(); 
      var form = $(this); 
      $.validator.unobtrusive.parse('#AddVariableForm'); 
      $.ajax({ 
       url: form.attr('action'), 
       type: "POST", 
       data: form.serialize(), 
       success: function (data) { 
        if(data.Success){ 
         $("#adm-form-addVariable").data("overlay").close(); 
        } 
       }, 
       error: function (jqXhr, textStatus, errorThrown) { 
        alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')"); 
       }, 
       complete: function() { 
        alert('complete'); 
       } 
      }); 
      return false; 
     }); 
    }); 

</script> 

的問題是,它目前還沒有任何關閉。我再次使用chrome調試模式進行檢查,它在方法中,但不做任何事情。我也檢查過,沒有JS錯誤。

我試圖做

$("#adm-form-addVariable").overlay({ api: true }).close() 

,但同樣的問題。

這是我如何把它聲明:

$(".adm-btn-overlay-trigger[rel]").overlay(
     { 
      mask: { 
       color: '#111', 
       loadSpeed: 300, 
       opacity: 0.9 
      }, 

      closeOnClick: true 
     } 
    ); 

如果我這樣做:。

$( 「#ADM外形addVariable」)覆蓋({API:真})。 isOpened()

我得到一個未定義的。

我在做什麼錯?

回答

1

我敢肯定,你需要調用close觸發元素上,而不是覆蓋:

http://jsfiddle.net/Fwzwc/2/

在你的情況$(".adm-btn-overlay-trigger[rel]").overlay().close();

免責聲明:我從來沒有使用jQuery的工具之前,但正如你在我的js小提琴中看到的,它似乎工作。

更新:使這個工作與多個觸發器,你似乎需要找到打開覆蓋的確切觸發器。有關此示例,請參閱http://jsfiddle.net/Fwzwc/3/

它歸結爲尋找覆蓋div的ID,然後調用.overlay()close()方法上的觸發其中的rel = overlayId:

$("img[rel='#" + overlayId + "']").overlay().close(); 
+0

我試着和它的作品。我試圖理解爲什麼?不是[rel]屬性訪問器?這是一個xpath表達式吧?這也許可以解釋爲什麼我以前不明白。 PS:多麼驚人的工具jsfiddle是!我以前不知道!不要猶豫,轉發我這種工具:)巨大的風扇:) – J4N 2012-02-28 07:03:41

+1

jQuery表達式基本上說:「具有rel屬性的class .adm-btn-overlay-trigger的元素」。 jquery工具似乎存儲了與觸發器有關的疊加信息,而不是疊加元素本身。這是一個設計選擇。順便說一句,我的初始解決方案不適用於多個觸發器,因爲$(「。adm-btn-overlay-trigger [rel]」)可以返回多個結果。我用一個可行的解決方案更新了我的答案。 – 2012-02-28 07:20:21

+0

哦,我剛剛在SO上了解到jsfiddler。確實是一個不錯的工具 – 2012-02-28 07:21:02