可以将delay()与jQuery UI dialog.open()一起使用吗?

时间:2011-07-10 12:55:41

标签: jquery jquery-ui

我已将此代码内联在文档就绪

if($.cookie('form_seen') == null) { 
  $("#dialog_form").dialog("open");
}

我知道如何使用像How to Delay automatic opening of Modal Dialog box window in JQuery 1.5.x?这样的setTimeout,所以不需要发布一个setTimeout示例。

我想知道我的个人教育,如果我想使用.delay而不是setTimeout,那么正确的语法是什么

if($.cookie('form_seen') == null) { 
  $("#dialog_form").delay(5000).dialog("open");
}

或类似的

在这种情况下,由于我必须将$("#dialog_form").dialog("open");包装在setTimeout调用的函数中,因此不需要闭包或找回$(this),但是在其他情况下我可以想象链更聪明。 非常欢迎评论利弊

1 个答案:

答案 0 :(得分:9)

if($.cookie('form_seen') == null) { 
  $("#dialog_form")
    .delay(5000)
    .queue(function(next){
        $(this).dialog("open");
        next(); // take this function out of queue a.k.a dequeue a.k.a notify done
                // so the next function on the queue continues execution...
    })
}

OR

if($.cookie('form_seen') == null) { 
  $("#dialog_form")
    .delay(5000)
    .queue(function(){
        $(this)
            .dialog("open")
            .dequeue(); // take this function out of queue a.k.a dequeue a.k.a notify done
                        // so the next function on the queue continues execution...
    })
}