Другая возможность состоит в том, чтобы использовать динамический массив вместо TStringList. Так как массивы являются считаемой ссылкой, Вы никогда не должны будете волноваться об освобождении ее.
Если вы не возражаете, немного измените свой HTML, включив атрибут value
параметров , вы можете значительно сократить код, необходимый для этого: с
<option>B</option>
до
<option value="B">B</option>
Это будет полезно, когда вы захотите сделать что-то вроде:
<option value="IL">Illinois</option>
При этом следующий jQuery внесет изменения:
$("select option[value='B']").attr("selected","selected");
Если вы решите , а не , чтобы включить использование атрибута value
, вам необходимо будет просмотреть каждый параметр и вручную проверить его значение:
$("select option").each(function(){
if ($(this).text() == "B")
$(this).attr("selected","selected");
});
Я бы перебрал варианты, сравнивая текст на то, что я хочу, чтобы его выбрали, а затем установите выбранный атрибут для этого параметра. Как только вы найдете правильный, завершите итерацию (если у вас нет множественного выбора).
$('#dropdown').find('option').each( function() {
var $this = $(this);
if ($this.text() == 'B') {
$this.attr('selected','selected');
return false;
}
});
Вы можете использовать чистый DOM. См. http://www.w3schools.com/htmldom/prop_select_selectedindex.asp
document.getElementById('dropdown').selectedIndex = 1;
, но jQuery может помочь:
$('#dropdown').selectedIndex = 1;
Что-нибудь вроде ...
$('select option:nth(1)').attr("selected","selected");
Код:
var select = function(dropdown, selectedValue) {
var options = $(dropdown).find("option");
var matches = $.grep(options,
function(n) { return $(n).text() == selectedValue; });
$(matches).attr("selected", "selected");
};
Пример:
select("#dropdown", "B");