2009-12-23 20 views
26

Tôi có menu thả xuống sau:Detect khi một cụ <option> được chọn với 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> 

Tôi muốn jQuery để phát hiện khi lựa chọn với id trade_buy_max được chọn.

Tôi đã thử những điều sau, nhưng có vẻ như nó không hoạt động.

$(document).ready(function() { 

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

     //do something 

    }); 
}); 

Bất kỳ ý tưởng nào?

Xin cảm ơn trước.

Trả lời

40

Công trình này ... Nghe sự kiện thay đổi trên hộp chọn để kích hoạt và sau đó chỉ cần kéo thuộc tính id của tùy chọn đã chọn.

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

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

Vì giá trị tùy chọn của tôi là duy nhất, tôi có thể sử dụng giá trị này: var val = $ ('# select_xyz'). Val(); Và sai lầm tôi đã làm trước khi tôi nhìn thấy bài đăng này - Tôi đã sử dụng nhấp chuột (..) khi tôi nên sử dụng .change (..). Cảm ơn! – gnB

0

Thay đổi .Chọn để .change và không gian đặt trướC#

4

bạn có thể ràng buộc change sự kiện trên chọn nó thay vào đó, sau đó kiểm tra xem tùy chọn chọn

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

+1 cho mã ngắn gọn – iwasrobbed

9

Những gì bạn cần làm là thêm một onchange handler cho sự select:

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

Tôi đánh giá cao biết - tại sao này bình chọn xuống? –

+0

Đây là cách tốt nhất để làm điều đó. –

+0

Một giải pháp rất tiện lợi. – super11

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

Chưa được kiểm tra, nhưng điều đó sẽ hoạt động.

1

Sử dụng các sự kiện change và nhận được id thuộc tính của các tùy chọn chọn:

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

    if (selectedId == "trade_buy_max") { 
    // do something 
    } 
}); 
Các vấn đề liên quan