2

按下转义键时如何破坏jquery对话框?

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

在关闭事件中?这是关闭事件:它看到最后一个“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

4 回答 4

5

我能找到的最优雅的方法是监听对话框的关闭事件,然后将其销毁。

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

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

于 2014-08-06T14:39:41.843 回答
3

jsBin 演示

$(document).keydown(function(e) {
      // ESCAPE key pressed
      if (e.which == 27) {
         $('#dialog').dialog('destroy');
      }
}); 
于 2012-11-22T00:46:21.640 回答
1

找到了一种直接编辑关闭事件的方法,因为我希望在整个应用程序中都有这种行为。

从:

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

至:

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

多谢!

于 2012-11-22T01:00:11.940 回答
1

从 DOM 中销毁 Dialog:

$(this).dialog('destroy').remove()

解释:

此代码将销毁对话框并从 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 中删除

于 2014-01-02T04:31:47.530 回答