Как прикрепить обратный вызов к эффекту jquery в диалоговом окне show?
моя проблема в том, что я не знаю, как прикрепить обратный вызов к диалоговому окну jQuery ui.
шоу на самом деле вариант:
$( ".selector" ).dialog({ show: 'slide' });
Я хочу иметь обратный вызов после завершения анимации слайда. Я посмотрел на сами эффекты, и у них есть обратный вызов:
effect( effect, [options], [speed], [callback] )
но в диалоговом окне эффект настроен совсем по-другому. Я попробовал также поставить:
$( ".selector" ).dialog({ show: 'slide', callback: function() {} });
но это не сработало.
предложения?
5 ответов
2015-07-27 обновление для тех, кто использует jQuery v1.10.0 или выше см. этот и другие ответы поскольку мое решение не будет работать с более новыми версиями jQuery.
оригинальный ответ
уже ответил, но так как у меня был ответ, я собираюсь опубликовать его в любом случае...
$('#dialog').dialog({
show: {
effect: 'slide',
complete: function() {
console.log('animation complete');
}
},
open: function(event, ui) {
console.log('open');
}
});
показывает open
затем animation complete
на консоль
два года спустя предлагаемое решение (@andyb) больше не работает в текущих версиях jQuery UI (в частности, начиная с v1.10.0). Его решение зависело от complete
метод обратного вызова - недокументированная функция .
Я придумал современное решение, используя jQuery Promise
Я загрузил пакет jQuery ui dev и узнал, что обратный вызов установлен с "complete":
$( ".selector" ).dialog({ show: 'slide', complete: function() {} });
спасибо всем, кто пытается помочь решить эту проблему:)
попробуйте использовать open
событие диалога:
$( ".selector" ).dialog({
open: function(event, ui) { ... }
});
Я счел необходимым использовать событие" focus:". Я терял правильно выбранную кнопку из-за шоу:. Прекрасные взаимодействия.
focus: function( event, ui ) {
$(this).siblings('.ui-dialog-buttonpane').find("button:contains('Upload')").focus();
},