jQuery UI对话 - X秒后关闭

Mar*_*tin 2 javascript jquery jquery-ui settimeout

这段代码完美无缺,除了 - 对话窗口在X毫秒后不会关闭,因为我期待...

setTimeout函数执行(我把alert()放在那里,它工作...),所以我认为问题是,$("#alert div").dialog('close');但我不知道有什么问题...

if ($("#alert").length) {
    var title;
    if ($("#alert span").length) {
        title = $("#alert span").text();
    }
    $("#alert div").dialog({
        title: title,
        modal: true,
        open: function() {
            setTimeout(function() {
                $("#alert div").dialog('close');
            }, 2000);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

编辑:如果有帮助,这里是HTML:

<div id="alert">
    <span>Password change</span>
    <div>Password was successfully changed.</div>
</div>
Run Code Online (Sandbox Code Playgroud)

解决!如果有人有想法,为什么我的代码不起作用会很棒...

j08*_*691 10

你有一个范围问题.试试这个jsFiddle示例:

if ($("#alert").length) {
    var title;
    if ($("#alert span").length) {
        title = $("#alert span").text();
    }
    $("#alert div").dialog({
        title: title,
        modal: true,
        open: function() {
            var foo = $(this);
            setTimeout(function() {
               foo.dialog('close');
            }, 2000);
        }
    });
}?
Run Code Online (Sandbox Code Playgroud)

这种情况发生的原因并没有像您预期的那样工作,这是由于您引用成为对话框的目标div的方式,以及jQuery UI构建对话框的方式.如果你看看一个开发者控制台,你会看到jQuery的拉你的DIV出它在DOM原来的位置,并为此不再可以参考的#alert div,因为它不再是一个孩子#alert.如果你给了div自己的ID,它将按预期工作,你不需要临时变量来引用它.