2

jQuery の最新ライブラリにアップグレードする前に、このコードを使用して開いているダイアログを閉じていました。このコードはエラーをスローするだけです。

  $(".dialogs:ui-dialog").each(function () {

            if ($(this).data('dialog').isOpen()) {
               $(this).dialog('close');
          };
 });

私が達成する必要があるのは、jQuery ダイアログが開いていて、ユーザーがメニュー項目をクリックして別のダイアログを開くときです。新しいダイアログを開く前に、他のすべてのダイアログが閉じていることを確認する必要があります。

このタスクを達成するために使用する新しいコードは何ですか?

4

1 に答える 1

3

あなたは単に使用することができます

$( ".dialogs" ).dialog( "close" );

ダイアログのソース コードを確認すると、既に閉じているダイアログを閉じても効果がないことがわかりますので、安全に使用できます。

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

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

なんらかの理由でロジックを保持したい場合は、これを使用できます

$(".dialogs").each(function () {
    var $dialog = $(this);
    if ($dialog.dialog('isOpen')) {
        $dialog.dialog('close');
    };
});
于 2013-07-12T18:30:55.630 に答える