Это моё решение .. надеюсь, оно кому-нибудь поможет. Она написана на лету, а не копировалась, так что прости меня за любые ошибки.
$("#btn").on("click", function(ev){
ev.preventDefault();
dialog.dialog("open");
dialog.find(".btnConfirm").on("click", function(){
// trigger click under different namespace so
// click handler will not be triggered but native
// functionality is preserved
$("#btn").trigger("click.confirmed");
}
dialog.find(".btnCancel").on("click", function(){
dialog.dialog("close");
}
});
Лично я предпочитаю это решение:)
edit: Извините .. я действительно должен был объяснить это более подробно. Мне это нравится, потому что, на мой взгляд, это элегантное решение.
Когда пользователь нажимает кнопку, которую нужно подтвердить первым, событие отменяется, как и должно быть.
Когда нажата кнопка подтверждения, решение состоит не в том, чтобы смоделировать щелчок ссылки, а в том, чтобы вызвать то же самое собственное событие jquery (щелчок) на исходной кнопке, которое сработало бы, если бы не было диалогового окна подтверждения. Единственным отличием является другое пространство имен событий (в данном случае «подтверждено»), поэтому диалоговое окно подтверждения больше не отображается. Собственный механизм Jquery может затем вступить во владение, и все может работать как ожидалось.
Еще одним преимуществом является то, что его можно использовать для кнопок и гиперссылок. Надеюсь, я был достаточно ясен.