Диалоговое окно jQuery UI Auto-Close с помощью setTimeout - PullRequest
7 голосов
/ 31 октября 2011

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

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
});

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

Не могу ли я использовать 'this' в аргументе для $ в setTimeout?

Ответы [ 2 ]

18 голосов
/ 31 октября 2011

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

$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true,
    open: function(event, ui){
     setTimeout("$('#acknowledged-dialog').dialog('close')",3000);
    }
});
8 голосов
/ 31 октября 2011

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

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

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

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

...