$('#box').dialog({
autoOpen: false,
width: 640,
height: 480,
buttons: {
"Ok": function() {
alert("dialog2");
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
этот код является инициализацией диалогового окна
$('#box').dialog('open');
а этот код является открытием(отображением) предварительно синициализированого диалогового окна
поэтому при первом клике $('#box').dialog('open'); несрабатывает поскольку еще не было инициализации после чего происходит инициализация
при втором клике окно инициализировано и $('#box').dialog('open'); срабатывает
советую вынести код инициализации из обработчика события click
либо поместить в условие "была ли инициализация":
$("#clickit").button().bind("click", function(event) {
var $box = $("#box");
if ($box.data("isInitialized") == null) {
$box.dialog({
autoOpen: true,
width: 640,
height: 480,
buttons: {
"Ok": function() {
alert("dialog2");
},
"Cancel": function() {
$box.dialog("close");
}
}
});
$box.data("isInitialized", true);
} else {
$box.dialog("open");
}
});