Кнопка Изменить в диалоговом окне jQuery - PullRequest
2 голосов
/ 29 августа 2009

Интересно, есть ли правильный способ удалить стандартную кнопку закрытия в строке заголовка и изменить ее на другую, которой я хочу назначить другую функцию, кроме Close Мне удается изменить классы, но, несмотря на это, функция закрытия, похоже, переопределяет любую в заголовке.

Мой текущий код для смены классов:

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-код заголовка:

<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>

В результате предыдущего кода javascript классы переопределяются, но функция остается. Полагаю, это из-за внутреннего кода jQuery? Любые советы, как это легко преодолеть?

Ответы [ 2 ]

1 голос
/ 29 августа 2009

Полагаю, вы имеете в виду, что функция закрытия остается.

Что вы можете сделать, это сохранить старое событие click, затем отсоединить его, добавить свой собственный, который внутренне вызывает старый щелчок, чтобы фактически закрыть диалоговое окно.

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

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

    //call the persisted click
    oldClickFn && oldClickFn()
});
0 голосов
/ 05 января 2010

Должно работать следующее:

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)
{
 /////////
}   
...