2

エスケープを押したときにjqueryダイアログを破棄する方法は?

次のようなコードを追加する方法はありますか?$。dialog('destroy');

クローズイベントの内部?これがクローズイベントです。最後の「else」にはhideメソッドがあり、これが男です。しかし、そこには何も破壊できません。

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からダイアログを破棄します。

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

説明:

このコードはダイアログを破棄し、ダイアログを持っているDivをDOMから削除します。

例えば:

$('#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 に答える