Javascript 如何基于选项文本获取选项索引

Javascript 如何基于选项文本获取选项索引,javascript,jquery,html,Javascript,Jquery,Html,我试图找到基于选项文本的选项索引。我的HTML代码如下 <select multiple="multiple" onchange="dependentOptions.select(this); opConfig.reloadPrice();optionImages.showImage(this);" title="" class="multiselect product-custom-option" id="select_472" name="options[472][]" > &l

我试图找到基于选项文本的选项索引。我的HTML代码如下

<select multiple="multiple" onchange="dependentOptions.select(this); opConfig.reloadPrice();optionImages.showImage(this);" title="" class="multiselect product-custom-option" id="select_472" name="options[472][]" >
<option selected="selected" value="3364">Black </option>
<option selected="selected" value="3365">White </option>
<option value="3366">Cool Grey #9 </option>
<option value="3367">Red </option>
<option value="3368">Fire Red </option>
<option value="3369">Orange </option>
<option value="3370">Rich Yellow </option>
<option value="3371">Primrose Yellow </option>
<option value="3372">Light Green </option>
</select>
但是它给了我-1而不是7

所以请帮我解决这个问题。

您可以使用伪选择器:

jQuery("#select_472 option:contains('Rich Yellow')").index();
您将使用伪选择器:

jQuery("#select_472 option:contains('Rich Yellow')").index();

索引应该从0开始,因此文本“Rich Yellow”的索引位置是6

$("#select_472 option[value='3370']").index();

$("#select_472 option:contains('Rich Yellow ')").index();

索引应该从0开始,因此文本“Rich Yellow”的索引位置是6

$("#select_472 option[value='3370']").index();

$("#select_472 option:contains('Rich Yellow ')").index();

您可以对其进行过滤并修剪文本值,看起来更安全:

jQuery("#select_472 option").filter(function(){
    return $.trim($(this).text()) === "Rich Yellow"
}).index();

您可以对其进行过滤并修剪文本值,看起来更安全:

jQuery("#select_472 option").filter(function(){
    return $.trim($(this).text()) === "Rich Yellow"
}).index();

第二个选择在jQuery选择中是错误的,您应该删除它。这里的一些其他选项:注意,索引是零基的,所以这里是6而不是7。第二个选择在jQuery选择中是错误的,您应该删除它。一些其他选项:注意,索引是零基的,所以这里是6而不是7基于选项文本。你离开的是值而不是文本。涉及值=。。。这正是我一直在寻找的。所有其他答案,其中一些非常聪明,我发现要完成这项任务,似乎要使用蛮力循环通过选项。但是你从值中获取索引的方法显然不是这样的。因此,尽管我没有回答OP的具体问题,我还是给了你一个惊喜!基于选项文本。你离开的是值而不是文本。涉及值=。。。这正是我一直在寻找的。所有其他答案,其中一些非常聪明,我发现要完成这项任务,似乎要使用蛮力循环通过选项。但是你从值中获取索引的方法显然不是这样的。因此,尽管我没有回答OP的具体问题,我还是给了你一个惊喜!可能存在以下问题:包含,例如火红色和红色之间Red@A.Wolff是的,这是一个很好的观点!过滤器在这里是一个更好的选择。可能与以下内容有关:包含,例如火红色和红色之间Red@A.Wolff是的,这是一个很好的观点!过滤器在这里是一个更好的选择。