2009-08-14 31 views
42

Làm cách nào để sử dụng jQuery, đặt mục "tiếp theo" của một mục đã chọn là "đã chọn".jQuery Set Selected Option Sử dụng Next

Ví dụ, nếu tôi có:

<select> 
<option value="1" >Number 1</option> 
<option value="2" selected="selected">Number 2</option> 
<option value="3" >Number 3</option> 
<option value="4" >Number 4</option> 
</select> 

Chúng ta có thể thấy rằng "Số 2" được chọn, và sử dụng jQuery, tôi muốn thiết lập "Số 3" như được lựa chọn, và loại bỏ các lựa chọn "thuộc tính" từ "Số 2". Tôi giả sử tôi cần phải sử dụng bộ chọn tiếp theo, nhưng tôi không hoàn toàn chắc chắn cách triển khai.

+0

Có một luồng khác có nhiều thông tin về việc chọn các tùy chọn đã chọn hữu ích (nó thực sự đã gửi cho tôi ở đây). Các tread là ở đây: http://stackoverflow.com/questions/1280499/jquery-set-select-index –

Trả lời

60
$('option:selected', 'select').removeAttr('selected').next('option').attr('selected', 'selected'); 

Kiểm tra ra mã làm việc ở đây http://jsbin.com/ipewe/edit

+0

Là loại bỏ các thuộc tính từ một trong những hiện đang được yêu cầu? Tôi có thể sai nhưng tôi nghĩ không? Cuộc gọi '.attr' phải được thay thế bằng .prop cho bất kỳ phiên bản gần đây nào của jquery theo như tôi biết, phải không? – codeling

6

bạn có thể sử dụng

$('option:selected').next('option') 

hoặc

$('option:selected + option') 

Và thiết lập giá trị:

var nextVal = $('option:selected + option').val(); 
$('select').val(nextVal); 
115

Cập nhật:

Tính đến jQuery 1.6 + bạn nên sử dụng prop() thay vì attr() trong trường hợp này.

Sự khác biệt giữa các thuộc tính và thuộc tính có thể quan trọng trong các tình huống cụ thể là . Trước jQuery 1.6, phương thức .attr() đôi khi tính đến các giá trị thuộc tính khi truy xuất một số thuộc tính, có thể gây ra hành vi không nhất quán. Kể từ jQuery 1.6, phương thức .prop() cung cấp một cách để truy lục một cách rõ ràng các giá trị thuộc tính, trong khi .attr() truy lục các thuộc tính.

var theValue = "whatever"; 
$("#selectID").val(theValue).prop('selected',true); 


gốc trả lời:

Nếu bạn muốn chọn bởi giá trị của các tùy chọn, bất kể vị trí của nó (ví dụ này giả sử bạn có một ID cho lựa chọn của bạn):

var theValue = "whatever"; 
$("#selectID").val(theValue).attr('selected',true); 

Bạn không cần phải "bỏ chọn". Điều đó xảy ra tự động khi bạn chọn một cái khác.

+0

Câu trả lời của bạn là câu trả lời được làm tròn hơn. Mà gần một năm sau đó đã giúp. Cảm ơn. –

+4

Một năm sau đó, nhưng tôi chỉ chạy vào mã này. Bạn đã thực hiện một sai lầm nhỏ với giả định của bạn rằng mục sẽ tự động được bỏ chọn khi bạn chọn một mục khác. Đó không phải là trường hợp khi danh sách tùy chọn là đa lựa chọn. Tôi chỉ muốn chỉ ra rằng trong trường hợp ai đó mong đợi rằng hành vi và đã thất vọng với nó không hoạt động như quảng cáo. – SRM

+0

@SRM - Tốt. Tôi, cá nhân, không bao giờ làm việc w/đa lựa chọn ... vì vậy nó không bao giờ vượt qua tâm trí của tôi. Cảm ơn bạn đã thêm phần giải thích. – GtotheB

3

Và nếu bạn muốn xác định chọn ID:

$("#nextPageLink").click(function(){ 
    $('#myselect option:selected').next('option').attr('selected', 'selected'); 
    $("#myselect").change(); 
}); 

Nếu bạn bấm vào mục với id "nextPageLink", tùy chọn tiếp theo sẽ được lựa chọn và onChange() Sự kiện này sẽ được gọi. Nó có thể trông giống như sau:

$("#myselect").change(function(){ 
    $('#myDivId').load(window.location.pathname,{myvalue:$("select#myselect").val()}); 
}); 

Sự kiện OnChange() sử dụng Ajax để tải thứ gì đó vào div được chỉ định.

window.location.pathname = địa chỉ thực tế

Sự kiện OnChange() được xác định bởi vì nó cho phép bạn thay đổi giá trị không chỉ bằng cách sử dụng nút netx/prev mà trực tiếp sử dụng lựa chọn chuẩn. Nếu giá trị được thay đổi, trang sẽ tự động thực hiện.

+0

+1 cho biết rằng ".change()" cần được gọi thủ công. Không biết nó có thể gây ra những cơn ác mộng. – everton

+0

Thay đổi là vấn đề của tôi, giá trị đã được chọn nhưng không hiển thị trong menu thả xuống. – avgbody

0

Tìm hàng, sau đó

var row = $('#yourTable'); 

giá trị mà bạn muốn chọn

var theValue = "5"; 
row.find("select:eq(2)").find("option[value="+theValue+']').attr('selected','selected'); 
0
$('#next').click(function(){ 
    $('#colored_background option:selected').next('option').attr('selected', 'selected'); 
    changeBackgroundColor(); 
}); 

Làm việc tại What is my favorite color?. Nhấp vào mũi tên.

+0

Trang web thú vị! Tại sao không bản đồ hình ảnh và làm cho các phần khác nhau có thể lựa chọn theo cách đó? – DevlshOne

17

Từ phiên bản 1.6.1 trên, đó là khuyến khích sử dụng các phương pháp chống đỡ cho các thuộc tính boolean/tài sản như chọn, chỉ đọc, kích hoạt, ...

var theValue = "whatever"; 
$("#selectID").val(theValue).prop('selected',true); 

Mọi chi tiết, vui lòng tham khảo để http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/

1

Đây là những gì tôi chỉ cần sử dụng, tôi thích cách làm sạch nó là :-)

$('select').val(function(){ 
    var nextOption = $(this).children(':selected').next(); 
    return $(nextOption).val(); 
}).change(); 
0
$("select").prop("selectedIndex",$("select").prop("selectedIndex")+1) 
1
$('your_select option:selected').next('option').prop('selected', true) 
0
$('#my_sel').val($('#my_sel option:selected').next().val()); 
$('#my_sel').val($('#my_sel option:selected').prev().val()); 
Các vấn đề liên quan