Jquery ui jQuery UI对话框-关闭时的事件问题

Jquery ui jQuery UI对话框-关闭时的事件问题,jquery-ui,jquery-ui-dialog,Jquery Ui,Jquery Ui Dialog,我试图在关闭jQuery UI对话框时执行特定操作。以下是我的代码的简化版本: $('a.open-trigger').click(function(){ var test = 'hello'; $('#dialog').dialog({ bgiframe: true, dialogClass: 'change', resizable: false, draggable: false, modal

我试图在关闭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”的警报。如果我再次打开并关闭对话框,我会收到两次“hello”警报。如果我第三次打开和关闭它,我会收到三个警报,以此类推

为什么这些警报会自我复制?我希望警报在关闭时只显示一次,无论我打开/关闭对话框多少次

谢谢!
Simon

每次调用
时都会附加额外的事件处理程序。单击
。这就是它复制的原因

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

将该代码拉到与其他事件绑定相同的级别,它应该可以正常工作。

每次调用
时都会附加额外的事件处理程序。单击
。这就是它复制的原因

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

将该代码拉到与另一个事件绑定相同的级别上,它应该可以按预期工作。

您已将一个函数绑定到打开按钮,该函数在每次触发打开事件时向关闭按钮添加一个事件处理程序。您应该将关闭事件处理程序添加到“a.open-trigger”事件函数之外的某个位置

$('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');
});

您已将一个函数绑定到“打开”按钮,该按钮在每次触发“打开”事件时向“关闭”按钮添加一个事件处理程序。您应该将关闭事件处理程序添加到“a.open-trigger”事件函数之外的某个位置

$('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');
});

您需要将关闭单击事件处理程序从打开单击事件处理程序中取出

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

    $('a.open-trigger').click(function(){    
        $('#dialog').dialog('open');
    });


    $('a.close-trigger').click(function(){
        alert("hello");
        var myDialog = $('#dialog');
        if (myDialog.dialog('isOpen'))
            myDialog.dialog('close');
    });
});

您需要将关闭单击事件处理程序从打开单击事件处理程序中取出

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

    $('a.open-trigger').click(function(){    
        $('#dialog').dialog('open');
    });


    $('a.close-trigger').click(function(){
        alert("hello");
        var myDialog = $('#dialog');
        if (myDialog.dialog('isOpen'))
            myDialog.dialog('close');
    });
});