繁体   English   中英

如何获取所有没有使用 jQuery 选择选项的选择元素?

[英]How do I get all select elements that do not have an option selected using jQuery?

如何获取所有没有使用 jQuery 选择选项的选择元素?

<select id="one">
     <option value=""></option>
     <option value="test"></option>
</select>

<select id="two">
     <option value=""></option>
     <option selected value="test"></option>
</select>

什么 jQuery 选择器会根据没有选择只返回 #one?

如果您的情况与 OP 不相似,请参阅https://stackoverflow.com/a/63588880/3499595 (默认值为“”)

$('select option:selected[value=""]').parent()
  • 选择所有select元素的所有:selected选项
  • 检查所选选项的值是否为"" ,在您的情况下,这意味着实际上没有选择任何选项。
  • 返回父级(这将是一个select

您可以利用 jQuery 的.parent().parent() .not()函数。 见下文:

// selector for all 'select' elements with any option below it
var all = $("select>option").parent(); // alternative $("select")

// selector for all 'select' element with a selected child
var selected = $("select>option[selected]").parent();

// the subtraction set "all - selected" achieved by `not`.
var unselected = all.not(selected);

请注意,jQuery 的parent元素负责从一组子元素的父元素中删除重复项。

JsFiddle 在这里

接受的答案为所有select元素提供了一个值为空的选定选项( "" ),它确实回答了关于 OP 示例 HTML 的问题,其中给出了具有空值的选项,但它并没有真正回答标题问题。

选择一个空值的选项和根本不选择任何选项是有区别的。

要选择没有选择任何选项的所有select元素,请使用

 $('select').not(':has(option:selected)')

如果您有 jquery 库,请尝试

$('select option').filter(function(i,d){return !d.hasAttribute("selected")});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM