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>

我使用~它是因为我可能需要找到某人这个词。

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

4

3 回答 3

4

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

$('select[name="clauses"]').find("option:contains('OR')").val();
于 2013-05-23T21:32:49.773 回答
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();
于 2013-05-23T21:33:03.603 回答
1

您的方法假定<option>元素具有text属性,但事实并非如此,您正在寻找的是:contains()选择器,正如您在jQuery 的文档中看到的那样:

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

所以尝试:

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

还要记住<option>元素是直接的子元素,<select>所以在这种情况下不需要使用.find()......

JSBin 演示

于 2013-05-23T21:33:10.633 回答