Я использовал следующий код (с jQuery v1.4.2), чтобы установить "выбранный" атрибут списка выбора на основе его "текстового" описания, а не его "значение":
$("#my-Select option[text=" + myText +"]").attr("selected","selected") ;
Этот код работал нормально, пока я не заметил один список выбора, на котором он не удалось, в зависимости от текста, который был сопоставлен. После некоторого притягивания волос я понял, что он терпит неудачу только в тех случаях, когда текст был одним словом (без пробелов, без альфа-символов). (Все мои предыдущие применения этого кода отлично работали с избранными списками, состоящими исключительно из многословных химических названий.)
Например, в пределах одного списка выбора он отлично работал с:
фарбитная кислота
25-Д-spirosta-3,5-диен
pogostol (# Pogostemon #)
Не удалось:
глюкозе
аденин
Я попытался каким-то образом подумать о том, чтобы окружать текстовую переменную кавычками (как одиночными, так и двойными) безрезультатно. (Но почему одно слово должно указывать, если нет двухсловной фразы?)
Я пробовал жестко кодировать текст там и имел тот же результат.
Это работает:
$("#constituent option[text=#a#-allocryptopine]").attr('selected', 'selected');
Это работает:
$("#constituent option[text=5-O-methylrisanrinol]").attr('selected', 'selected');
Этот не работает:
$("#constituent option[text=adenine]").attr('selected', 'selected');
Я пробовал жесткие кодовые цитаты. Этот не работает:
$("#constituent option[text='glucose']").attr('selected', 'selected');
Я не мог получить закодированные кавычки (одиночные или двойные) для работы с любым текстом вообще.
Стоит отметить, что кавычки приемлемы при использовании атрибута 'value'. Например, обе эти функции работают нормально:
$("#constituent option[value='3']").attr('selected', 'selected');
$("#constituent option[value=3]").attr('selected', 'selected');
Ниже приведен код для демонстрации проблемы. Два списка выбора, первый из которых состоит из простых слов, второй из двух фраз слова. Когда страница загружается, она пытается установить значение каждого списка выбора. Код jQuery работает во втором списке, но не в первом. (Я попытался помещать пробел в "обезьяну", чтобы получить "mon key", и это сработало!)
Ниже приведена рабочая демонстрация приведенного ниже кода .
Я был бы очень признателен за понимание того, что я делаю неправильно здесь. Или даже альтернативный синтаксис выбора для использования атрибута "text". Спасибо заранее всем, у кого есть время, чтобы помочь.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript" src="../js/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var text1 = 'Monkey';
$("#mySelect1 option[text=" + text1 + "]").attr('selected', 'selected');
var text2 = 'Mushroom pie';
$("#mySelect2 option[text=" + text2 + "]").attr('selected', 'selected');
});
</script>
</head>
<body>
<select id="mySelect1">
<option></option>
<option>Banana</option>
<option>Monkey</option>
<option>Fritter</option>
</select>
<select id="mySelect2">
<option></option>
<option>Cream cheese</option>
<option>Mushroom pie</option>
<option>French toast</option>
</select>
</body>
</html>