simplemodal click事件在IE7中停止工作

时间:2010-05-28 04:00:50

标签: jquery simplemodal

这是我的代码:

$('#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'类的click事件(而不是使用jquery click方法)找到了解决方法,如下所示:

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

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

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

但是NOPE,它不工作..请帮帮我.. @ericmmartin,我希望你现在在网上...... huhu ..

新观察:如果我在类'.yes'之前放置类'.close'的解绑定/绑定,则问题出现在我的“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();
        }); 
    }
});

为什么为什么?!

1 个答案:

答案 0 :(得分:1)

对于初学者来说,对于“X”,使用一类“simplemodal-close”而不仅仅是“close”。 SimpleModal将处理将close函数绑定到该元素的click事件。

其次,你不需要做unbind / bind。以下应该有效:

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

如果没有,也许您的代码中还有其他内容......