автоматическое закрытие диалогового окна jQuery UI с помощью setTimeout

Я пытаюсь автоматически закрыть диалог через три секунды после открытия. Я пробовал следующие методы:

setTimeout($("#mydialog").dialog('close'), 3000);

вот он в контексте:

$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true
});

setTimeout($("#acknowledged-dialog").dialog('close'), 3000);

но с помощью этого метода он даже не показывает! Я предполагаю, что метод close вызывается сразу после того, как он показывается на странице. Журнал не показывает ошибок.

Я также пробовал привязку к событию dialogopen:

$("#acknowledged-dialog").bind('dialogopen', function(event, ui) {
    setTimeout($(this).dialog('close'), 3000);
});
$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true
});

диалоговое окно отображается, но не закрывается автоматически. Нет ошибка в журналах здесь тоже.

Я не могу использовать " это " в аргументе для $ в setTimeout?

2 ответов


setTimeout вызывает возвращаемое значение $("#mydialog").диалог ("закрыть") через 3 секунды. вы хотите бросить все это как строку, и это должно работать просто отлично. Кроме того, я не думаю, что вы хотите привязать "dialogopen" перед инициализацией диалога. Ниже должно работать просто отлично:

$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true,
    open: function(event, ui){
     setTimeout("$('#acknowledged-dialog').dialog('close')",3000);
    }
});

Я написал статьи специально для проблемы, которую вы испытываете. Пожалуйста, прочтите это.

короче говоря, вы хотите обернуть $("#mydialog").dialog('close') с встроенной функцией везде, где вы хотите, чтобы она выполнялась в результате задержки или инициированного события.

setTimeout(function(){
    $("#mydialog").dialog('close')
}, 3000);

диалоговое окно даже не отображается, потому что вы закрыли его, как только открыли его в каждом случае.