У меня была та же проблема с меткой кнопки «0 1». Мне «нужен» синтаксис массива для кнопок вместо синтаксиса объекта, потому что я хотел установить идентификатор кнопки (мой код был похож на rdamborsky с установленными идентификаторами и все еще не работал). Я посмотрел на этот вопрос:
Значки диалоговых кнопок jQuery UI
И изменил попытку кода в вопросе. Для вашего конкретного примера:
$dialog.dialog({ buttons: {
"Ok": function() { close_project(); },
"Cancel": function() { $(this).dialog("close"); }
},
open: function() {
$('.ui-dialog-buttonpane').find('button:contains("Cancel")').attr("id", "cancel_button");
$('.ui-dialog-buttonpane').find('button:contains("Ok")').attr("id", "ok_button");
}});
Кстати, я замечаю ($ this), когда я думаю, что вы имеете в виду $ (this) в своем коде. Это может испортить один клик. Другой щелчок может иметь проблему (но только если это каким-то образом в запросе ajax): если вы используете IE 7 или 8, внесите небольшое изменение, чтобы обойти проблему с областью видимости IE (ajax). Перед вашим кодом $ dialog.dialog выполните "window.close_project = close_project;" и затем вызвать "window.close_project ();" в функции щелчка.
К вашему сведению, если вам не нужно менять идентификатор, класс или что-то еще, отбросьте «open» и просто используйте синтаксис объекта для кнопок. Или просто воспользуйтесь ответом Амурры.