2013-02-08 61 views
6

我正在使用jquery mobile和一個對話框來顯示一些多個選擇框。其中一些內容是根據選擇使用Ajax動態創建的。我想在關閉對話框時通過常規x按鈕進行Ajax調用。在HTML的主要部分如下所示:jquery mobile中的對話框關閉事件

<a href="#queryPage" data-rel="dialog" data-transition="slidedown" >Filter Results</a> 
    <div data-role="page" id="queryPage" data-theme="a"> 
    <div data-role="header" data-theme="a"> 
    <h1>Select Filters</h1> 
    </div> 
    <div data-role="content"> 
    <form action="" method="get" id="filterForm"> 
    <fieldset id ="filterFields"></fieldset> 
    </form> 
    </div> 
    </div> 

我目前運行在網頁中隱藏的代碼如下所示進行調用: $('#queryPage').live('pagehide', function(event) { //code for ajax call });

不過,我想撥打電話時,對話框關閉,因爲一些選擇列表很大,並且他們創建了一個隱藏queryPage的新頁面,即使該對話框尚未關閉。我曾嘗試:

$('#queryPage').bind('dialogclose', function(event) { 
     alert('closed'); 
    }); 

,也試過

$('#queryPage').dialog({close:function(event, ui){ 
     alert("closed"); 
    }}); 

這些我已經把一個叫做在頁面加載的功能,但在關閉對話框不顯示警報。任何幫助將不勝感激。

回答

12

對話框沒有特定的事件,因爲它們只是顯示爲對話框的頁面。嘗試pagehide事件。

$("#MyDialog").bind("pagehide",function(){ 
    alert("Dialog closed"); 
}); 

而且,示例代碼的第一行有一個鏈接,是一個<div data-role="page">這不應該做的外面。

+0

對不起,我遺漏了第一行的HTML代碼的其餘部分,因爲我沒有認爲這是必要的問題。就像我說的,我目前使用'pagehide',但我正在尋找更好的或者其他方式來做到這一點。 – user1868237 2013-02-08 20:49:27

1

Pagehide可以委託這樣:

$(document).delegate("#MyDialog", "pagehide", function() { 
    alert("Dialog closed"); 
}); 

,你也將有機會獲得調用頁面的屏幕元素。

0

Andleer共享使用jquery關閉對話框的相應事件。不過,我們也可以用這種方式進行編碼。

$(document).on("pagehide","#Dialog",function(){ 
     console.log('Dialog has closed.'); 
    });