2009-08-29 10 views
2

タイトルバーのデフォルトの閉じるボタンを削除して、他の機能を変更する方法があるのではないかと思います。私はクラスを変更することができますが、それにもかかわらず、close関数はタイトルバーのanyにオーバーライドするようです。変更のクラスのjQueryダイアログボックスのボタンを変更

私の現在のコードは:

var closeButton = $("#dialog").parent().find('.ui-dialog-titlebar a'); 
closeButton.attr("class","ui-dialog-titlebar-lock"); 
closeButton.find("span").attr("class","ui-icon ui-icon-lock"); 

タイトルバーのHTMLコード:前回のJavaScriptコードの結果として

<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix" unselectable="on" style="-moz-user-select: none;"> 
    <span id="ui-dialog-title-profile-dialog" class="ui-dialog-title" unselectable="on" style="-moz-user-select: none;">Edit My Profile</span> 
    <a class="ui-dialog-titlebar-close ui-corner-all" href="#" role="button" unselectable="on" style="-moz-user-select: none;"> 
     <span class="ui-icon ui-icon-closethick" unselectable="on" style="-moz-user-select: none;">close</span> 
    </a> 
</div> 

、クラスが上書きされますが、機能が残っています。これはjQueryの内部コードのためだと思います。どのように簡単にそれを克服するためのアドバイス?

答えて

1

クローズ機能が残っていると思います。

あなたができることは、古いクリックイベントを永続化してからバインドを解除し、内部的に古いクリックを呼び出す独自のものを追加して実際にダイアログを閉じることです。

//persist old click 
var oldClickFn = closeButton.click; 

closeButton.unbind('click').click(function(){ 
    //functionality you want 

    //call the persisted click 
    oldClickFn && oldClickFn() 
}); 
+0

感謝を!それはまさに、私が探していたものです。 – flyeris

+0

ありがとうございます! – ecounysis

0

次は動作するはずです:

var dialog = // here open the dialog and assign it to the dialog variable 
dialog.parent(".ui-dialog").find(".ui-dialog-titlebar-close").unbind('click');   
dialog.parent(".ui-dialog").find(".ui-dialog-titlebar-close").show(); 
dialog.parent(".ui-dialog").find(".ui-dialog-titlebar-close").bind('click', function() { showNoteDialogClose(null, null) }); 


function showNoteDialogClose(data, args) 
{ 
///////// 
} 
関連する問題