2009-12-23 3 views
26

Ho il seguente menu a discesa:rilevare quando un determinato <option> è selezionato con jQuery

<select name='type' id='type'> 
    <option id='trade_buy' value='1' selected='selected'>Buy</option> 
    <option id='trade_buy_max' value='1'>Buy max</option> 
    <option id='trade_sell' value='2'>Sell</option> 
    <option id='trade_sell_max' value='2'>Sell max</option> 
</select> 

mi piacerebbe jQuery per rilevare quando viene selezionata l'opzione con l'id trade_buy_max.

Ho provato quanto segue, ma non sembra funzionare.

$(document).ready(function() { 

    $("option#trade_buy_max").select(function() { 

     //do something 

    }); 
}); 

Qualche idea?

Grazie in anticipo.

risposta

40

Questo funziona ... Ascolta l'evento di modifica nella casella di selezione da attivare e, una volta eseguito, trascina l'attributo id dell'opzione selezionata.

$("#type").change(function(){ 
    var id = $(this).find("option:selected").attr("id"); 

    switch (id){ 
    case "trade_buy_max": 
     // do something here 
     break; 
    } 
}); 
+0

Poiché i miei valori di opzione erano unici, potrei usare questo: var val = $ ('# select_xyz'). Val(); E l'errore che stavo facendo prima di vedere questo post - stavo usando click (..) quando avrei dovuto usare .change (..). Grazie! – gnB

0

Change .select a .Per passare e lo spazio messo davanti #

4

è possibile associare change evento sul suo select invece, quindi verificare se l'opzione selezionata

$("select#type").change(function() { 
    if($("option#trade_buy_max:selected").length) 
    { 
    // do something here 
    } 
}); 
+0

+1 per il codice conciso – iwasrobbed

9

Quello che dovete fare è aggiungere un onchange gestore per il select:

$('#type').change(function(){ 
    if($(this).val() == 2){ 
    /* Do Something */ 
    } 
}); 
+0

mi farebbe piacere sapere - perché è stato questo bocciato? –

+0

Questo è il modo migliore per farlo. –

+0

Una soluzione molto elegante. – super11

1
$("option#trade_buy_max").change(function() { 
    opt = $(this).children("option:selected").attr('id'); 
    if(opt == '#trade_sell_max'){ 
     // do stuff 
    } 
}); 

Non testato, ma dovrebbe funzionare.

1

utilizzare l'evento change e ottenere l'attributo id dell'opzione selezionata:

$('#type').change(function() { 
    var selectedId = $('option:selected', this).attr('id'); 

    if (selectedId == "trade_buy_max") { 
    // do something 
    } 
});