jQuery选择器-get<;选择>;仅当<;选项>;没有被禁用

jQuery选择器-get<;选择>;仅当<;选项>;没有被禁用,jquery,jquery-selectors,Jquery,Jquery Selectors,我正在寻找一个jQuery选择器,它仅在所选的未被禁用时才会返回元素 HTML: 如果选择了禁用选项,它将返回[],或者返回所选的。 我需要获取元素返回,我知道我可以使用.parent(),但由于某种原因,我无法在代码中使用它 也 不返回父对象,我想是这样的:父对象是否为此而存在 编辑: 这可能会帮助你们理解我的目标: $.each($("form").find("input[name], textarea[name], select[name] option:selected:not([dis

我正在寻找一个jQuery选择器,它仅在所选的
未被禁用时才会返回
元素

HTML:

如果选择了禁用选项,它将返回
[]
,或者返回所选的

我需要获取
元素返回,我知道我可以使用
.parent()
,但由于某种原因,我无法在代码中使用它

不返回父对象,我想是这样的:父对象是否为此而存在

编辑: 这可能会帮助你们理解我的目标:

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

因此,我只想返回表单的每个“输入”元素,前提是它们对我来说很有价值

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

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

演示:

以下是一个查询示例,将查找已选择但未禁用的选项:

$("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!");
});
如果希望查找包含
,可以使用以下选项:

已经提供了一个说明性的例子

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

还为此提供了一个选项。

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

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

我从未听说过
:家长
。您不能使用
.parent()
?你试过
.closest('select')
?@bowhart好吧,假设我不能使用任何函数,我需要通过选择器来完成。此选择器与其他选择器链接。比如$(“input,textarea”),所以如果我应用.parent(),我将不再有input或textarea元素,而是它们的父元素……我建议针对两个主题区域分别提出两个问题。您似乎有一个关于组合CSS选择器的问题,还有一个关于
:parent
谓词的问题。请参见下面的
:parent
。如果当前元素具有>0个子元素,则满足此条件。没有CSS在树上导航。。。看到这个return the option元素,我需要返回select元素。“我知道我可以使用.parent(),但由于代码中的某些原因,我不能使用它。”,检查我对这个问题的编辑,你可能会理解为什么这是一个相当模糊的问题。你能解释一下“某些原因”可能是什么吗?我正在同时选择其他元素,如果我添加.parent(),我得到的是select元素,但不是我同时选择的其他元素,请检查编辑的问题,谢谢运行两个单独的选择,然后将它们合并。见下文:
$(function(){
    $("form select option[selected]:not(option[disabled])").each(function(i, e) {
        console.log("Item: %O -> %s", e, e.outerHTML);
    });
    console.log("Done!");
});
$("form select option[selected]:not(option[disabled])").parent("select")
var selection = $("form").find("input[name], textarea[name]");
selection.add($("form").find("select[name] option:selected:not([disabled])").parent())