jQuery选择器 - 仅当<option>未被禁用时才获取<select>元素</option> </select>

时间:2014-12-02 00:04:50

标签: jquery jquery-selectors

我正在寻找一个jQuery选择器,只有在未选中的<select>被禁用时才会返回<option>元素。

HTML:

<form>
    <select name="input-select">
        <option disabled selected>Select an option</option>
        <option value="1">1</option>
        <option value="2">2</option>
    </select>
</form>

现在,如果你运行这个jQuery选择器:

$("form select option:selected:not([disabled])")

如果选中已禁用的选项,它将返回[],或者返回所选的<option>
我需要返回<select>元素,我知道我可能正在使用.parent(),但我在代码中因某些原因无法使用它。

另外

$("form select option:selected:not([disabled]):parent")

不回归父母,虽然:parent就在那里吗?

编辑: 这可能有助于你们了解我的目标:

$.each($("form").find("input[name], textarea[name], select[name] option:selected:not([disabled]):parent"), function(index, value) {
    console.log(value.name+"="+value.value);
});

所以,我只想返回一个表单的每个“input”元素,只要它们对我有价值

3 个答案:

答案 0 :(得分:4)

如何使用以下代码来确定它:

var selectedOption = $("select option:selected");

if(selectedOption.is(":enabled"))
{
    var parentObject = selectedOption.parent();
    console.log(parentObject);
}

演示:Fiddle

答案 1 :(得分:1)

这不能通过一个选择器完成,因此我们需要使用.add(),例如Kolban said

var selection = $("form").find("input[name], textarea[name]");
selection.add($("form").find("select[name] option:selected:not([disabled])").parent())

答案 2 :(得分:0)

这是一个查询示例,它将查找已选中但未禁用的选项:

$("form select option[selected]:not(option[disabled])")

可以使用以下代码片段测试/演示:

$(function(){
    $("form select option[selected]:not(option[disabled])").each(function(i, e) {
        console.log("Item: %O -> %s", e, e.outerHTML);
    });
    console.log("Done!");
});

如果希望找到包含<select>的内容,可以使用以下内容:

已提供说明性jsFiddle

$("form select option[selected]:not(option[disabled])").parent("select")

还提供了fiddle