Вы не хотите делать это через .live
и т. Д., Так как вы в конечном итоге будете привязываться к X каждого диалога, который вы создаете. Вы хотите привязать к определенному диалогу X для определенной цели, так что ...
Примечание
Прежде чем читать дальше, обратите внимание, что это работает отлично, но слишком сложно. Крис Иванов опубликовал более правильный, более краткий, более подходящий ответ.
Конечное примечание
В методе открытия диалогового окна проверьте, не привязали ли вы клик к «X». Если нет, отметьте, что у вас есть, а затем найдите «X» вашего экземпляра и свяжите его:
$( function()
{
$( '#dialog' ).dialog( {
open: function() //runs every time this dialog is opened
{
var $dialog = $( this );
if( ! $dialog.data( 'titleCloseBound' ) )
{
$dialog
.data( 'titleCloseBound', true ) //flag as already bound
.closest( 'div.ui-dialog' ) //traverse up to the outer dialog wrapper
.find( 'a.ui-dialog-titlebar-close' ) //search within it for the X
.bind( 'click', function( e ) //bind it
{
alert( 'hi' );
e.preventDefault();
} );
}
}
} );
} );
Вам нужна проверка того, была ли она привязана, потому что open
запускается каждый раз, когда открывается диалоговое окно, поэтому множественные открытия будут повторно связывать одну и ту же функцию снова и снова без нее.
Демо: http://jsfiddle.net/XM2FH/