2013-02-08 72 views
6

jquery mobileといくつかの選択ボックスを表示するダイアログを使用しています。コンテンツの一部は、選択に基づいてAjaxで動的に作成されます。ダイアログが閉じられると(通常のxボタンを使用して)、Ajaxコールを行いたいと思います。次のようにHTMLの外観の主な部分は:jqueryモバイルでダイアログを閉じるイベント

<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

1

Pagehideは、次のような委任することができます。

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

ます。また、呼び出しページの画面要素にアクセスする必要があります。

0

Andreerは、jqueryを使用してダイアログを閉じるための適切なイベントを共有しました。しかし、このようにコード化することもできます。

$(document).on("pagehide","#Dialog",function(){ 
     console.log('Dialog has closed.'); 
    }); 
関連する問題