在jquery移动中的对话关闭事件

时间:2013-02-08 19:59:29

标签: jquery-mobile dialog event-handling

我正在使用jquery mobile和一个对话框来显示一些多个选择框。一些内容是根据选择使用Ajax动态创建的。我想在对话框关闭时(通过常规x按钮)进行Ajax调用。 html的主要部分如下:

    <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");
    }});

这些我已经放入了一个在页面加载时调用的函数,但是当关闭对话框时不会显示警报。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:12)

对话框没有特定事件,因为它们只是显示为对话框的页面。试试pagehide活动。

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

此外,示例代码的第一行有一个<div data-role="page">之外的链接,不应该这样做。

答案 1 :(得分:2)

Pagehide可以这样委托:

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

您还可以访问调用页面的屏幕元素。

答案 2 :(得分:1)

Andleer使用jquery分享了关闭对话框的相应事件。但是,我们也可以这样编码。

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