使用通配符jquery查找选项文本

4

我想获得值为3,我的jQuery代码哪里出了问题?

jQuery代码:

$('select[name="clauses"]').find("option[text~='OR']").val()

HTML:

<select multiple=""  name="clauses" >
    <option value="0"> </option>
    <option value="1">       (  </option>
    <option value="2">         (  Someone</option>
    <option value="3">    OR Something ) )</option>
    <option value="4">AND Something</option>
</select>

我使用了 ~,因为可能需要查找例如“某人”的单词。

编辑:谢谢大家的快速回复。不幸的是,我只能标记一个答案为已解决。

3个回答

4

jQuery没有text选择器,除此之外,text不是一个属性,你可以使用:contains选择器:

$('select[name="clauses"]').find("option:contains('OR')").val();

它曾经在旧版本(1.6及之前)的jQuery中工作,尽管现在似乎不行了 - http://jsfiddle.net/B32A9/ - dsgriffin

2

text 不是一个属性,因此您不能在其上使用属性选择器。您可以改用 contains

$('select[name="clauses"]').find("option:contains('OR')").val()

这种方法无法处理像DOOR这样的情况。如果您需要处理这种情况,可以使用带有filter的正则表达式:

$('select[name="clauses"]').find('option').filter(function() {
    return $(this).text().match(/\bOR\b/);
}).val();

1
你的方法假设<option>元素具有text属性,但事实并非如此。你要找的是:contains()选择器,如jQuery文档中所示:

描述:选择包含指定文本的所有元素。

因此,请尝试使用以下代码:
$('select[name="clauses"]').children('option:contains(OR)').val();

请注意,<option>元素是<select>的直接子元素,因此在这种情况下不需要使用.find()...

JSBin演示


1
我只知道通配符,然后用那个关键词进行谷歌搜索。感谢您让我知道 :contains - viper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接