6

我正在使用 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");
    }});

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

4

3 回答 3

12

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

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

此外,您的示例代码的第一行有一个链接,该链接位于<div data-role="page">不应执行的 a 之外。

于 2013-02-08T20:20:51.483 回答
2

Pagehide 可以这样委派:

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

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

于 2014-03-05T17:11:57.327 回答
1

Andleer 分享了使用 jquery 关闭对话框的适当事件。但是,我们也可以用这种方式编码。

    $(document).on("pagehide","#Dialog",function(){
        console.log('Dialog has closed.');
    });
于 2016-08-11T05:31:28.037 回答