Если , вы хотите выбрать опцию с текстом «CSS» (который я заключаю из вашего кода, хотя в вашем вопросе указано иное) с правильной разметкой HTML
<select name="lang">
<option value=0>Select</option>
<option value=1>HTML</option>
<option value=2>CSS</option>
<option value=3>PHP</option>
</select>
вашего кодаотлично работает: http://jsfiddle.net/fkling/sSRDR/
Правильная разметка в этом случае означает:
- атрибуты в кавычках
- закрытие
option
теги
Обычно у вас не должно быть закрывающих тегов (хотя нет причин их не иметь), браузер вставит их для вас, но в этом случае, если вы их не поместите, браузер сгенерирует
<option value=2>CSS
</option>
, что означает, что текст внутри опции имеет значение "CSS\n"
(CSS
+ разрыв строки), и это никогда не будет равно только "CSS"
.
Однако, если вы можете исключить, что искомый текст может встречаться в других элементах, вы можете использовать :contains()
:
$('option:contains(CSS)').attr('selected', true);
С другой стороны, если вы хотите выбрать все, что не является "CSS", вам понадобится несколько полей select
, так как обычно select
может иметь только одну выбранную опцию:
<select multiple="multiple" name="lang">
и вы можете использовать .filter()
, чтобы отфильтровать параметры:
$('select[name="lang"] > option').filter(function() {
return $(this).text() !== "CSS";
}).attr('selected', true);
DEMO