2009-10-16 5 views
3

Если я хочу, чтобы создать диалоговое окно JQuery UI, я использовать что-то вроде:Диалоговое окно JQuery UI: как я могу получить настройки диалога?

var settings = {autoOpen:false, draggable:false, and so on...}; 

var dialog = $("#container").dialog(settings); 

Но теперь я хочу знать, как я могу я получить диалоговые параметры, как показано выше, что-то вроде

dialog.getSettings(); 

Мне нужно это, потому что у меня есть приложение, которое использует много диалогов с поведением по умолчанию. Что-то вроде

function doAfterSubmit(dialogSettings) { 
    // some code 
} 

var dialogSettings = { 
    user:{ 
     add:{ 
      title:"Add user", 
      buttons:{ 
       "Add":function() { 
        var settings = $(this).getSettings(); // The answer goes here 

        // AJAX to send some content 

        doAfterSubmit(settings); 
       } 
      }, 
      otherProperties 
     }, 
     remove:{ 
      title:"Remove user", 
      buttons:{ 
       "Remove":function() { 
        var settings = $(this).getSettings(); // The answer goes here 

        // AJAX to send some content 

        doAfterSubmit(settings); 
       } 
      }, 
      otherProperties 
     }, 
     removeAll:{ 
      title:"Remove all user", 
      buttons:{ 
       "Remove all":function() { 
        var settings = $(this).getSettings(); // The answer goes here 

        // AJAX to send some content 

        doAfterSubmit(settings); 
       } 
      }, 
      otherProperties 
     } 
    }  
} 

После просмотра диалогового источника JQuery UI, я заметил свойство по умолчанию, который содержит все свойства диалогового компонента. Но как я могу получить это по умолчанию property?

С уважением,

ответ

3
// Get or set any dialog option. If no value is specified, will act as a getter. 
.dialog('option' , optionName , [value]); 
1

Try dialog.options, хотя мне очень интересно знать, почему вы хотите, чтобы посмотреть на них (которые могут изменить ответ).

7
dialog.dialog('option', 'name_of_option'); 

Это должно вернуть параметр диалога для этого.

Что вы можете сделать, это сохранить список имен и пропустить их, чтобы перестроить массив настроек. Почему именно вам нужны все варианты возврата?

+0

Хорошее предложение, UPvote –

1

Используя ваш пример кода, вы должны сделать что-то вроде этого ...

var optionValue = dialog.dialog('option' , optionName); 

Где Optionname это что-то вроде «высоты», «положение», «изменяемыми» и т.д.

Это все в JQuery UI documentation

EDIT: После просмотра комментариев, которые вы добавили к другим ответам, похоже, что вам нужен вспомогательный метод, который обеспечивает необходимую функциональность (вероятно, он должен был быть предоставлен как часть основного штепселя in)

Что-то, что просто вызывает .dialog ('option', xxxx) для каждой опции и помещает их все в ассоциативный массив. Я не могу не думать, что даже с этим массивом в вашем распоряжении вы вернетесь, чтобы вытащить из массива одну опцию, вместо того, чтобы ее пульсировать прямо из диалога. Или вы планируете использовать массив для создания второго диалога?

+0

Да, я хочу получить настройки диалога, чтобы создать второе диалоговое окно. –

+0

Если вы создали исходное диалоговое окно, то у вас уже должна быть копия «настроек», которая будет использоваться при создании второго (третьего, четвертого) диалогового окна - или я что-то пропустил? – belugabob

0

Как указал Даниил, вы можете циклически перебирать переменные «настройки» и строить свой собственный объект для getSettings(), чтобы действовать.

4

Вы можете просто использовать

var obj = $(selector).dialog("option"); 

"OBJ" содержит все диалоговые опции как обычный объект JAVASCRIPT.

В событии (например, "открыть"), вы можете использовать

var obj = $(this).dialog("option"); 

Я использую JQuery UI 1.8.16 (последняя). Прекрасно подходит для меня. Надеюсь, поможет.

+0

У вас есть ссылка на соответствующую страницу в документации? – carbontax

Смежные вопросы