2009-07-15 3 views
7

Как удалить кнопки в диалоговом окне jquery? Например, я попробовал перезвонить .dialog с правильными новыми параметрами, но диалог кажется незатронутым.Диалог jQuery UI - не удается удалить кнопки

$ ('. Selector'). Dialog ('option', 'buttons', {}); не работает и не работает, если объявлены фактические новые строки и функции кнопок.

Мысли?

+1

Можете ли вы разместить более образец кода? – juan

+0

http://jqueryui.com/demos/dialog/#option-buttons –

+0

Как выясняется, это действительно работает, но он будет терпеть неудачу, если ваш синтаксис является диалоговым ({'option', ...}); –

ответ

2

Кнопки не могут быть добавлены/установлены во время загрузки диалога.

0

Вам необходимо, чтобы destroy текущий первый. Затем вы можете создать новый с новыми параметрами, которые вы хотите.

EDIT (ответить на комментарии): Я не знаю, что вам сказать. Я сделал следующее на своем сайте и WFM.

$('.selector').dialog('destroy'); 
$('.selector').dialog({ buttons: { "Ok": function() { $(this).dialog("close"); } } }); 
$('.selector').dialog('open'); 

Вы должны вернуться к предварительно инициализации состояния, чтобы изменить кнопки, которая является то, что destroy делает. Возможно, я просто не был достаточно ясен на шагах.

+0

Уничтожение шкуры. Конечно, я могу уничтожить диалог и построить его снова, но документация jquery ui, похоже, кажется, что вы можете создавать кнопки post-creation. –

+0

редактирование для ответа на ваш комментарий. вам нужно вернуться в предварительное состояние, прежде чем вы сможете изменить кнопки. – geowa4

13

Вы вводите новые кнопки неправильно. Параметры должны быть переданы как объект.

Это будет работать:

var options = { 
    buttons: {} 
}; 
$(selector).dialog('option', options); 

Нет необходимости разрушать и создавать новый диалог.

Конечно, вы можете также заменить кнопки объект с новым набором кнопок, если вы хотите:

var options = { 
    buttons: { 
     NewButton: function() { 
      $(this).dialog('close'); 
      // add code here 
     } 
    } 
}; 
$(selector).dialog('option', options); 
0

Другое, возможно, самый простой и очень гибкий способ сделать это через CSS. (что, если в конечном итоге они понадобятся в будущем ...).

Похоже:

.ui-dialog-titlebar-close{display:none} 

Если вы хотите сделать это только для некоторых диалоговых окон, вы можете добавить dialogClass: опции при инициализации диалогового окна, и ваш CSS будет выглядеть (например, вы добавили myDialogClass в dialogClass , так что весь контейнер диалога будет доступен через этот класс:

.myDialog .ui-dialog-titlebar-close{display:none} 

удачи в настройке