1

jQuery UI ダイアログを閉じるときに、特定のアクションを実行しようとしています。これが私のコードの簡略版です:

$('a.open-trigger').click(function(){
    var test = 'hello';

    $('#dialog').dialog({
        bgiframe: true,
        dialogClass: 'change', 
        resizable: false,
        draggable: false,
        modal: true,
        height: 334, 
        width: 450,
        autoOpen: false,
        show: 'fade'
    });

    $('#dialog').dialog('open');

    $('a.close-trigger').click(function(){
        alert(test);
        $('#dialog').dialog('close');
    });
});

ダイアログを初めて閉じたときに、「こんにちは」という単語で予期されるアラートが表示されます。ダイアログをもう一度開いて閉じると、"hello" アラートが 2 回表示されます。3 回目に開いて閉じると、3 つのアラートが表示されます。

これらのアラートが重複しているのはなぜですか? ダイアログを何度開いたり閉じたりしても、閉じるときに一度だけアラートが表示されるようにしたいと思います。

ありがとう!サイモン

4

3 に答える 3

8

を呼び出すたびに、追加のイベント ハンドラーをアタッチしています.click。それが重複している理由です。

$('a.close-trigger').click(function(){
                    alert(test);
                    $('#dialog').dialog('close');
            });

そのコードを他のイベント バインディングと同じレベルに引き出すと、期待どおりに動作するはずです。

于 2009-05-14T21:50:05.880 に答える