我正在寻找一个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”元素,只要它们对我有价值
答案 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。