jQuery: хранение содержимого поля выбора в переменной? - PullRequest
2 голосов
/ 23 октября 2010

У меня есть поле выбора на моей HTML-странице, которое заполнено несколькими элементами по умолчанию. С помощью AJAX я заменяю содержимое (параметры) в поле выбора соответствующими параметрами.

Как я могу сохранить содержимое (опции) моего поля выбора в переменную и затем снова загрузить его в выбор? Было бы полезно иметь возможность вернуть параметры по умолчанию для поля выбора.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 23 октября 2010

Вы можете использовать метод jQuery .clone() для исходных элементов, чтобы сохранить ссылку на копию в исходном состоянии.

var $default_opts = $('#mySelect').children()//.clone();

Я использовал jQuery .children() здесь, чтобы сделать его немного более универсальным, если вы используете <optgroup> элементы.

Когда придет время вернуться к оригиналам, вы можетесделайте что-то вроде этого:

$('#mySelect').empty().append( $default_opts.clone() );

Это опустошит <select> текущего содержимого и добавит клон значений по умолчанию, так что ваша копия будет сохранена в исходном состоянии.1021 * РЕДАКТИРОВАТЬ: Я неправильно понял часть вопроса.Вам не понадобится первый .clone().

2 голосов
/ 23 октября 2010

Если вы хотите восстановить объекты вместо строки html (), вы можете использовать detach ()

//remove options from select and hold them inside a variable
var defaults=$('select option').detach();

//clear select and restore the defaults
$('select').empty().append(defaults);

Пример, как использовать его с replaceWith():

<select id="target" size="3">
 <option>a
 <option>b
</select>
<input type="button" 
   value="replace"
   onclick="fx($('#target'),this)"
   />

<script  type='text/javascript'>
function fx(o,b)
{
 if(b.value==='replace')
 {
  o.data('defaults',$('option',o).replaceWith('<option>1</option><option>2</option>'));
  $(b).val('restore');
 }
 else
 {
  $(o).empty().append($(o).data('defaults'));
  $(b).val('replace');
 }
}
</script>

http://jsfiddle.net/doktormolle/Sgn72/

0 голосов
/ 23 октября 2010

Я бы использовал функцию jQuery .data для хранения html параметров.

select_box = $("#select-box");
select_box.data("orginal_options", select_box.html());
select_box.html("<option value='1'>New Option</option>");

Для повторения:

select_box.html(select_box.data("original_options"));

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

...