2012-10-23 20 views
10

Tôi có trình đơn thả xuống với các nhóm tùy chọn khác nhau. Nếu ai đó chọn một tùy chọn, làm thế nào tôi có thể kiểm tra xem nó thuộc về nhóm nào? Ví dụ: nếu 'ferrari' được chọn, bạn sẽ xác định nhóm thuộc nhóm nào?jQuery: tìm số <optgroup> cho giá trị được chọn trong một yếu tố <select>

Hãy sử dụng jQuery hoặc javascript thô.

<select name="testSelect"> 
    <optgroup label="fruits"> 
     <option value="apples">Apples</option> 
     <option value="oranges">Oranges</option> 
     <option value="pears">Pears</option> 
    </optgroup> 
    <optgroup label="cars"> 
     <option value="ford">ford</option> 
     <option value="toyota">toyota</option> 
     <option value="ferrari">ferrari</option> 
    </optgroup> 
</select> 
+3

Đợi. Điều này có thể là tầm thường khi tìm kiếm phụ huynh của phần tử đã chọn. –

Trả lời

27

Bạn có thể làm điều này bằng jQuery:

$('select').change(function() { 
    var selected = $(':selected', this); 
    alert(selected.closest('optgroup').attr('label')); 
});​ 

Xem một ví dụ sống ở đây: http://jsfiddle.net/jkeyes/zjLCp/1/

Cập nhật: Có bạn có thể sử dụng parenthttp://jsfiddle.net/jkeyes/zjLCp/2/

selected.parent() 
+0

lạ để thấy rằng sự kiện .click không có sẵn trong jquery cho phần tử này .. !! –

12

Vâng , trong js tinh khiết:

this.options[this.selectedIndex].parentNode.label 

Không phải một cuộc gọi hàm đơn và ít mã khởi động hơn. :-)

+0

this.selectedOptions [0] .parentNode.label – lokeshjain2008

+1

@ lokeshjain2008 — Tôi đoán OP muốn có một phương pháp đáng tin cậy, không phải thứ gì đó [được hỗ trợ một phần trong một vài trình duyệt] (http://stackoverflow.com/questions/10711767/is- selectedoptions-broken-or). – RobG

+0

cảm ơn liên kết. – lokeshjain2008

Các vấn đề liên quan