Как: обновить диалоговое окно jQuery div новым содержимым из json - PullRequest
1 голос
/ 01 марта 2011

Я пытаюсь обновить div моего диалога новым содержимым из массива json, и у меня возникли проблемы, и я запрашиваю некоторые рекомендации.

Я вывожу массив json, в котором есть метки для «Имени» и «Определения». Пользователь представлен со списком переключателей. Когда пользователь нажимает переключатель, который имеет следующую структуру:

<input type="radio" value="23" name="statistic" id="stat-23" />

Я беру значение переключателя и использую его, чтобы определить, к какой паре «Имя» и «Определение» я обращаюсь из массива json.

Затем я использую пару 'Name' 'Definition', чтобы заполнить div, который обычно обновляется динамически. Для этого я использую следующий код:

$('input[type=radio]').live( 'change', function(){
  if ( ! $(this).is(':checked') )
    return false;
  var stat_id = $(this).attr( 'id' ).replace( /stat-/, '' );
  refreshDefinition( stat_id );
  } );

function refreshDefinition( stat_id ) {
  var definition = definitions[ stat_id ];
  var div = $("<div id='definition'>"+definition.name+": "+definition.definition+"</div>");
  $('#definition').replaceWith( div );
  }

Это прекрасно работает без диалога (оно обновляется просто как есть), однако, это выглядело бы намного лучше, если бы был какой-то способ встроить диалог, чтобы при нажатии пользователем кнопки диалоговое окно появлялось может видеть пару «Имя» «Определение», а затем может выйти из нее, когда они будут удовлетворены.

$('#definition').dialog();

Я бы хотел, чтобы в приведенном выше коде отображались обновленные данные, но, похоже, он этого не разрешает.

Если у вас есть какие-либо рекомендации о том, как я могу решить эту проблему или какие-либо альтернативные подходы, я был бы очень признателен!

Спасибо.

1 Ответ

1 голос
/ 01 марта 2011

Вы пытались обновить содержимое диалогов?

$('#definition').html(definition.name+": "+definition.definition);

Вот пример .

EDIT: ненужный .dialog ('widget') сделал этот ответ неправильным.

...