按下escape时如何销毁jquery对话框?

时间:2012-11-22 00:41:19

标签: jquery jquery-ui dialog jquery-ui-dialog jquery-dialog

按下escape时如何销毁jquery对话框?

有没有办法添加这样的代码:     $ .dialog( '破坏');

关闭事件? 这是关闭事件:它认为最后一个'else'有一个隐藏方法,这就是那个人。但不能破坏那里的任何东西:

close: function( event ) {
    var that = this,
        maxZ, thisZ;

    if ( !this._isOpen ) {
        return;
    }

    if ( false === this._trigger( "beforeClose", event ) ) {
        return;
    }

    this._isOpen = false;

    if ( this.overlay ) {
        this.overlay.destroy();
    }

    if ( this.options.hide ) {
        this._hide( this.uiDialog, this.options.hide, function() {
            that._trigger( "close", event );                
        });
    } else {
        this.uiDialog.hide();
        this._trigger( "close", event );
    }

4 个答案:

答案 0 :(得分:4)

我能找到的最优雅的方式是收听对话框的关闭事件,并将其销毁。

$('#mydialog').dialog({
    buttons: {
        OK: function(event) {
            $(this).dialog("close");
        }
    },
    close: function(event, ui) {
        $(this).dialog("destroy");
    },
});

这样,ESCAPE和OK按钮都会关闭对话框,然后事件监听器启动并从DOM中删除对话框。

答案 1 :(得分:3)

jsBin demo

$(document).keydown(function(e) {
      // ESCAPE key pressed
      if (e.which == 27) {
         $('#dialog').dialog('destroy');
      }
}); 

答案 2 :(得分:2)

从DOM中销毁对话框:

<强> $(本).dialog( '破坏')。除去()

说明:

此代码将破坏对话框,并从DOM中删除正在进行对话的Div。

例如:

我有一个名为$('#report_dialog')的对话框,我想从DOM中删除该元素

所以我可以使用像

这样的语句
  **$('#report_dialog').dialog('destroy').remove();**

在按Esc键的同时从DOM中销毁对话框:  ================================================== ==

I just Want to override the **closeOnEscape** event in jquery dialog.


$(document).keydown(function(e) {

    // ESCAPE key pressed
    if (e.which == 27) {
        $('#report_dialog').dialog('destroy').remove();
    }
});

我们可以准确地使用密钥代码,否则 $ .ui.keyCode.ESCAPE 它会自动从DOM中删除密钥代码

答案 3 :(得分:1)

找到了一种直接对close事件进行编辑的方法,因为我想在整个应用程序中使用此行为。

自:

else {
    this.uiDialog.hide();
    this._trigger( "close", event );
}

要:

else {
    this.uiDialog.remove();
    this._trigger( "close", event );
}

非常感谢!