Javascript变量第一次没有正确设置

时间:2014-04-10 12:27:47

标签: javascript jquery simplemodal

我的问题是我的变量flag没有得到更新,我甚至试图用setTimeout函数做到这一点,但没有运气!

的JavaScript

function confirmed(msg, okFtn, cnclFtn){
    flag=false;
    $(document.createElement('div')).html('\
        <div style="max-width:250px;width:100%;">'+msg+'\
        <p>\
            <button value="yes" class="button small gradient blue left rnd5 cnfrm">OK</button>\
            <button value="no" class="button small gradient blue left rnd5 cnfrm">Cancel</button>\
        </p></div>')
        .modal({
            onShow: function (dialog) {
                $('.simplemodal-close').remove();
                $("#simplemodal-container").css({'height': 'auto','width':'auto'});
                $(window).trigger('resize.simplemodal'); 
            },
            onClose: function(){
                console.log(flag);
                if(flag)
                    return true;
                else
                    return false;
            }
        });
    $('button.cnfrm').click(function(){
        flag=true;
        if ($(this).val() == 'yes') {
            if(okFtn && typeof okFtn === 'function')
                okFtn();
        } else {
            if(cnclFtn && typeof cnclFtn === 'function')
                cnclFtn();
        }
        setTimeout(function(){$.modal.close();}, 1000);
    });
}

这是我所说的Fiddle link

由于变量没有设置,因此$.modal.close()工作不正常,我想要的只是关闭模态对话框,当且仅当点击了按钮OKcancel时。

1 个答案:

答案 0 :(得分:2)

http://www.ericmmartin.com/projects/simplemodal/

来自文档:

onClose:用于向关闭模态对话框元素添加效果。在你应用了效果等之后,你需要调用$ .modal.close();所以SimpleModal可以正确地重新插入数据并清理对话框元素。

您需要在$.modal.close()处理程序中添加对onClose()的调用,例如

        onClose: function(){
            console.log(flag);
            if(flag) $.modal.close();
        }

PS。对于flag变量,它的设置与您预期的完全相同。这不是问题。