簡體   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