我想检测选择选项是否在'国际'optgroup下。现在我的方法是检测选定项目中最接近的optgroup,并获取其标签属性的内容。我可以测试这个字符串'国际'这个词。其他方法更受欢迎。jQuery get parent optgroup
正如你所知道的,从这个标记了不幸的是,OPTGROUP不换子选项:
<select id="venue">
<optgroup label="New England"></optgroup>
<option value="1"> NH</option>
<option value="2"> ME</option>
<option value="3"> VT</option>
<option value="4"> MA</option>
<option value="4"> CT</option>
<option value="4"> RI</option>
<optgroup label="International"></optgroup>
<option value="100">Canada</option>
<option value="100">Texas</option>
<option value="100">Mexico</option>
</select>
jQuery的我一直在与明显不会工作,但你可以看到我我试图去:
dropdownval = jQuery('select#venue option:selected')
.parentsUntil(jQuery('optgroup'), '[label*="international"]')
.attr('label');`
编辑
它已经向我指出的是optgroups以下嵌套也可以
<select id="venue">
<optgroup label="New England"></optgroup>
<option value="1"> NH</option>
<option value="2"> ME</option>
<option value="3"> VT</option>
<option value="4"> MA</option>
<option value="4"> CT</option>
<option value="4"> RI</option>
<optgroup label="International"></optgroup>
<option value="100"> Canada</option>
<option value="100"> Texas</option>
<option value="100"> Mexico</option>
<optgroup label=" Europe"></optgroup>
<option value="100"> Bruges</option>
</select>
'.prevUntil'是你需要的,而不是'.parentsUntil什么',因为optgroup不是父母。 – Barmar
不错,但'dropdownval'仍然返回为'undefined' – orionrush
我没有意识到'prevUntil'在匹配的元素之前停止_before_,不包括它。看到我的答案。 – Barmar