$("select[name=lang] > option").each(function() {
if ($(this).text() == "CSS"){
$("select[name=lang]").val($(this).val());
}
}
<select name=lang>
<option value=0>Select
<option value=1>HTML
<option value=2>CSS
<option value=3>PHP
</select>
我想检查所有选项并按optiontext选择。 最好的问候
答案 0 :(得分:2)
如果您要选择带有文字'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
代码通常你不必有关闭标签(虽然没有理由没有它们),浏览器会为你插入它们,但是在这种情况下,如果你不放它们,浏览器将生成< / p>
<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);
答案 1 :(得分:0)
$("select[name=lang] > option").click(function(e) {
if ($(e.target).text() == "CSS"){
return false;
}
}