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

时间:2013-05-23 21:30:04

标签: jquery html

尝试获取值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>

我使用了~,因为我可能需要找到单词Someone。

编辑:感谢大家的快速回复。不幸的是,我只需要标记答案1

3 个答案:

答案 0 :(得分:4)

jQuery没有text选择器,除了text不是属性之外,您可以使用:contains选择器:

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

答案 1 :(得分: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();

答案 2 :(得分:1)

您的方法假定<option>元素具有text属性,情况并非如此,您正在寻找的是:contains()选择器,正如您在{{{ 3}}:

  

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

请尝试:

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

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

<强> jQuery's documentation