1

这是我的代码:

$('#alertInfo').modal({
    close :false,
    overlayId :'confirmModalOverlay',
    containerId :'confirmModalContainer',
    onShow : function(dialog) {
        dialog.data.find('.message').append(message);

        dialog.data.find('.yes').click(function(){
            if ($.isFunction(callback)) callback.apply();
            $.modal.close();
        });

        dialog.data.find('.close').click(function(){
            $.modal.close();
        });  
    }
});

基本上,这是一个对话框,我调用它来显示一条警告消息,其中有一个“X”按钮(带有“关闭”类)和一个“确定”按钮(带有“是”类)。

问题出现在 IE7 中。当我每次调用此对话框并使用我的“X”按钮将其关闭时,我的“X”按钮在我第三次调用它时不再起作用(是的第三次!)。但是,如果我使用“确定”按钮关闭对话框,无论我调用多少次它都可以正常工作。

我想我通过解除绑定和绑定'.close'类的点击事件(而不是使用jquery click方法)找到了一种解决方法,如下所示:

dialog.data.find('.close').unbind('click');
dialog.data.find('.close').bind('click',function(){$.modal.close();});

它奏效了!!!然而,不幸的是,问题现在出现在我的“确定”按钮中。所以,我做了同样的解除绑定和绑定'.yes'类的点击事件,如下:

dialog.data.find('.yes').unbind('click');
dialog.data.find('.yes').bind('click',
    function() {
        if ($.isFunction(callback)) callback.apply();
        $.modal.close();
});

但是不,它不起作用..请帮助我.. @ericmmartin,我希望你现在在线.. 呵呵..

新观察:如果我将类 '.close' 的解除绑定/绑定放在类 '.yes' 之前,问题会出现在我的“X”(使用类 '.close')按钮中。如下所示:

$('#alertInfo').modal({
    close :false,
    overlayId :'confirmModalOverlay',
    containerId :'confirmModalContainer',
    onShow : function(dialog) {
        dialog.data.find('.message').append(message);

        dialog.data.find('.close').unbind('click');
        dialog.data.find('.close').bind('click',
            function(){
                $.modal.close();
        });

        dialog.data.find('.yes').unbind('click');
        dialog.data.find('.yes').bind('click',
            function(){
                if ($.isFunction(callback)) callback.apply();
                $.modal.close();
        }); 
    }
});

为什么哦为什么?!

4

1 回答 1

1

对于初学者,对于“X”,使用“simplemodal-close”类而不是“close”。SimpleModal 将处理将关闭函数绑定到该元素的单击事件。

其次,您不需要进行解除绑定/绑定。以下应该有效:

$('.yes', dialog.data[0]).click(function () {
    if ($.isFunction(callback)) {
        callback.apply();
    }
    $.modal.close();
});

如果没有,也许你的代码中还有其他事情发生......

于 2010-05-28T13:13:53.470 回答