使用jQuery在setTimeout中无法使用UI对话框

时间:2013-01-21 20:49:23

标签: javascript jquery jquery-ui jquery-ui-dialog settimeout

我想在10秒后触发对话,这很简单..或者我想: - )

function showPopup() {
    $( "#emailPopup" ).dialog({autoOpen:false});
    //alert('Dialog shown');
}
$( "#emailPopup" ).dialog("open");
$( "#emailPopup" ).dialog("close");

$(document).ready(function() {
    $( "#emailPopup" ).dialog({autoOpen:false});

    window.setTimeout(function(){
        showPopup();
    }, 4000);

    jwplayer('videoBox').setup({
        flashplayer: '<?php echo asset_url(); ?>swf/player.swf',
        file: 'http://www.youtube.com/watch?v=Oj8CwmP_Jm4',
        height: 329,
        width: 540,
        events:{
            onBeforePlay:function(){
                $('#videoTitle').hide();
                $('#videoReplay').hide();
            },
            onPlay:function(){
                videoStarted = true;
                clearTimeout(popTO);
            },
            onComplete:function(){
                home.flashGetStarted();
                $('#videoReplay').show();
            }
        },
        plugins: 'fbit-1'
    });
});

当我运行代码showPopup IS运行时,我可以使用Firebug中的调试验证这一点,但在调用对话框后,我仍然看不到任何对话框。如果我直接调用setTimeout之外的对话框,它可以工作......但是在内部,这是不行的。

2 个答案:

答案 0 :(得分:2)

要在对话框中使用open方法,首先需要初始化对话框。

$( "#emailPopup" ).dialog({autoOpen:false}); 

function showPopup() {
     $( "#emailPopup" ).dialog("open"); 
     //alert('Dialog shown');
}


window.setTimeout(function(){
    showPopup();
}, 4000);

DEMO:http://jsfiddle.net/QtkBL/

答案 1 :(得分:0)

  

如果我直接调用setTimeout之外的对话框   有效...但在内部,这是不行的

这是因为范围不同。