2014-09-17 19 views
5

Ho un numero di selezioni a discesa selezionate e il primo valore di tutti è vuoto (cioè ""). Qual è il modo migliore per selezionare la prima selezione il cui valore è ""? Ho provato cose comejquery - trovare la prima selezione con il primo valore selezionato?

$j("[id*='user'] option[value='']").first().prop("selected", true); 

Ma questo è impostarlo vs cercare quello che corrisponde.

(tutti gli ID iniziano con 'utente'; Ho bisogno di trovare il primo utente seleziona che ha un valore vuoto ...)

+0

Ma dato che tutti gli elementi di selezione hanno un'opzione con una proprietà 'defaultSelected', si potrebbe scoprire che questo è lo stesso che trovare il primo elemento select indipendentemente dalle selezioni dell'utente. –

risposta

1

È necessario utilizzare iniziare con selettore jQuery cioè [id^=startwithid] per ottenere tutti gli ID iniziano con l'utente, vedere di seguito il codice

$j("[id^='user'] option[value=]:selected").first().parent(); 

O modo migliore per utilizzare :has come qui di seguito

$j("[id^='user']:has(option[value=]:selected)").first(); 
+0

questo darà l'oggetto di opzione. non selezionare elemento. –

+0

sì, lasciami correggere. –

2

poiché si desidera l'elemento di selezione, si può provare .has()

$j("[id*='user']").has('option[value=""]:selected').first() 

Prova

$("[id*='user']").has('option[value=""]:selected').first().css({ 
 
    "color": 'red', 
 
    "border-color": 'green' 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select id="user-1"> 
 
    <option value="">Select</option> 
 
    <option selected="selected">1</option> 
 
</select> 
 
<select id="user-2"> 
 
    <option value="">Select</option> 
 
    <option selected="selected">1</option> 
 
</select> 
 
<select id="user-3"> 
 
    <option value="">Select</option> 
 
    <option>1</option> 
 
</select> 
 
<select id="user-4"> 
 
    <option value="">Select</option> 
 
    <option>1</option> 
 
</select> 
 
<select id="user-5"> 
 
    <option value="">Select</option> 
 
    <option selected="selected">1</option> 
 
</select>

+0

@aldanux copia incolla errore ... risolto –

+0

+1 Anche se funziona, il colore 'select' non cambia per me in Chrome (La sua multa in FF). I browser non sono coerenti con lo stile 'select', quindi potrei suggerire di aggiornare il tuo esempio per includere anche il restyling del bordo (che * mostra * in Chrome) es:' $ ("[id * = 'user']"). ('opzione [valore = ""]: selezionata'). first(). css ({'border-color': 'red', 'color': 'red'}) ' – Moob

+0

@Moob done ..... –

0

È possibile utilizzare :has selettore per trovare selezionare avendo valore di opzione "" come selezionato:

$j("[id*='user']:has(option[value='']:selected)").first(); 

o

$j("[id*='user']:has(option[value='']:selected):eq(0)");