2009-09-12 25 views

Trả lời

733
$("#target").val($("#target option:first").val()); 
+292

Cần lưu ý rằng điều này dễ dàng hơn thực hiện với $ ("# target") [ 0] .selectedIndex = 0; –

+13

Nó hoạt động, nhưng nó dựa trên giá trị * phần tử thứ nhất *, nếu phần tử thứ nhất chứa giá trị rỗng, nó sẽ chọn phần tử gần nhất CÓ giá trị – evilReiko

+1

Dường như hoạt động tốt, ngoại trừ IE6. Không chắc chắn của 7-8, hoạt động trên 9. – Nicholi

102
// remove "selected" from any options that might already be selected 
$('#target option[selected="selected"]').each(
    function() { 
     $(this).removeAttr('selected'); 
    } 
); 


// mark the first option as selected 
$("#target option:first").attr('selected','selected'); 
+1

Cách tiếp cận thứ hai tốt. Vui lòng thêm giá trị của thuộc tính đã chọn. Ví dụ: attr ("selected", "selected"). Không có tham số bổ sung này, lựa chọn không được thực hiện. –

+0

có bạn là chính xác .. tôi quên thêm giá trị đó .. – user149513

+1

Điều gì sẽ xảy ra nếu một số tùy chọn đã được chọn? –

58

Khi bạn sử dụng

$("#target").val($("#target option:first").val()); 

này sẽ không làm việc trong Chrome và Safari nếu giá trị tùy chọn đầu tiên là null.

tôi thích

$("#target option:first").attr('selected','selected'); 

bởi vì nó có thể làm việc trong tất cả các trình duyệt.

+3

Bạn cũng cần phải "bỏ chọn" bất kỳ phần tử đã chọn nào trước đây để làm việc trong nhiều trường hợp hơn. Xem câu trả lời từ James Lee Baker để biết chi tiết. –

+0

không hoạt động chính xác với Firefox 53.0 –

30
$("#target")[0].selectedIndex = 0; 
+1

Điều này sẽ không hoạt động trong trường hợp menu thả xuống có mục được chọn trước. Xem nhận xét của tôi về câu trả lời đã chọn để biết chi tiết. –

15

Nếu bạn có các tùy chọn tắt, bạn có thể thêm không ([tắt]) để ngăn chặn việc lựa chọn họ mà kết quả như sau:

$("#target option:not([disabled]):first").attr('selected','selected') 
+1

Điểm tốt về các tùy chọn bị tắt. Nice bổ sung cho các câu trả lời được trình bày! –

7

Tôi đã phát hiện ra rằng chỉ thiết attr chọn không hoạt động nếu đã có thuộc tính đã chọn. Mã tôi sử dụng bây giờ trước tiên sẽ không đặt thuộc tính đã chọn, sau đó chọn tùy chọn đầu tiên.

$('#target').removeAttr('selected').find('option:first').attr('selected', 'selected'); 
+0

Điều này hoạt động tốt và rất giống với câu trả lời của James Lee Baker đã lưu ý ở nơi khác về câu hỏi này. Tôi thích câu trả lời khác với tùy chọn: được chọn và tùy chọn: đầu tiên là việc thực hiện tùy chọn: đầu tiên có thể nhanh hơn (tính toán khôn ngoan) so với find(). –

5

Dưới đây là làm thế nào tôi sẽ làm điều đó:

$("#target option") 
    .removeAttr('selected') 
    .find(':first')  // You can also use .find('[value=MyVal]') 
     .attr('selected','selected'); 
+0

Hoạt động hoàn hảo trong vòng lặp $ .each, cảm ơn! –

+1

Điều này hoạt động tốt và rất giống với câu trả lời của James Lee Baker đã lưu ý ở nơi khác về câu hỏi này. Tôi thích câu trả lời khác với tùy chọn: được chọn và tùy chọn: đầu tiên là việc thực hiện tùy chọn: đầu tiên có thể nhanh hơn (tính toán khôn ngoan) so với find(). –

11

Một cách khác để thiết lập lại các giá trị (đối với nhiều yếu tố được lựa chọn) có thể là thế này:

$("selector").each(function(){ 

    /*Perform any check and validation if needed for each item */ 

    /*Use "this" to handle the element in javascript or "$(this)" to handle the element with jquery */ 

    this.selectedIndex=0; 

}); 
+4

+1 nó thực sự là một câu trả lời hay, nhưng bạn có thể làm cho nó cụ thể hơn cho miền câu hỏi; thay vì '$ (" selector ")' bạn có thể viết '$ ('# target')' –

+0

Đây là những gì tôi cần vì tôi có nhiều lựa chọn, cảm ơn :) –

2

Nếu bạn đang đi để sử dụng tùy chọn đầu tiên làm mặc định như

<select> 
    <option value="">Please select an option below</option> 
    ... 

thì bạn chỉ có thể sử dụng:

$('select').val(''); 

Thật tuyệt vời và đơn giản.

+2

Điều này sẽ không hoạt động trong IE. –

37

Thay đổi giá trị của đầu vào được chọn hoặc điều chỉnh thuộc tính đã chọn có thể ghi đè thuộc tính selectedOptions mặc định của phần tử DOM, dẫn đến yếu tố có thể không được đặt lại đúng trong biểu mẫu đã được đặt lại.

phương pháp prop Sử dụng jQuery để xóa và thiết lập các tùy chọn cần thiết:

$("#target option:selected").prop("selected", false); 
$("#target option:first").prop("selected", "selected"); 
+3

Hoàn hảo. Tôi có các menu thả xuống xếp tầng. Khi người dùng chọn tùy chọn cha mẹ 2 thì tùy chọn con 3 Tôi không muốn điều đó "dính". Nói cách khác, người dùng sau đó chọn phụ huynh # 1, sau đó chọn lại phụ huynh # 2. Khi điều đó xảy ra tôi muốn trình đơn con để đặt lại tùy chọn đầu tiên (đó là "Bất kỳ" trong trường hợp của tôi). Tất cả các giải pháp khác ở đây đều thất bại trên Firefox v19 và Chrome trên Linux. –

16

Một điểm tinh tế tôi nghĩ tôi đã phát hiện khoảng đầu bình chọn câu trả lời là mặc dù họ một cách chính xác thay đổi giá trị được lựa chọn, họ không cập nhật phần tử mà người dùng nhìn thấy (chỉ khi họ nhấp vào tiện ích con họ sẽ thấy dấu kiểm bên cạnh phần tử được cập nhật).

Việc kết nối cuộc gọi .change() đến cuối cũng sẽ cập nhật tiện ích con giao diện người dùng.

$("#target").val($("#target option:first").val()).change(); 

(Lưu ý rằng tôi nhận thấy điều này khi sử dụng jQuery Mobile và hộp trên máy tính để bàn Chrome, vì vậy đây có thể không phải là trường hợp ở mọi nơi).

+0

Chaining a .change() call to end cũng sẽ cập nhật tiện ích UI. – codemirror

93

Bạn có thể thử này

$("#target").prop("selectedIndex", 0); 
+12

Hy vọng câu trả lời này sẽ được chú ý nhiều hơn. –

+2

Điều này không hoạt động đúng trong mọi trường hợp. Tôi có một trình đơn thả xuống tầng cha/con. Chọn cha mẹ # 1, hiển thị con # 1, chọn con # 2. Bất cứ khi nào họ chọn một phụ huynh mới, nó sẽ đặt con tương ứng trở lại tùy chọn đầu tiên. Giải pháp này không làm điều này. Nó rời khỏi menu con "dính". Xem tùy chọn: selected.prop ('selected', false)/option: đầu tiên.giải pháp prop ('selected', 'selected') cho câu hỏi này cho câu trả lời hoạt động trong nhiều tình huống hơn. –

+1

Điều này cũng hoạt động khi bạn đang sử dụng $ (this) – DalekSall

7

$('#newType option:first').prop('selected', true)

+0

Chỉ hoạt động nếu chưa có các tùy chọn đã chọn. Xem câu trả lời của James Lee Baker. – Webars

0
$("#target").val(null); 

làm việc tốt trong chrome

4

Mặc dù mỗi chức năng có lẽ là không cần thiết ...

$('select').each(function(){ 
    $(this).find('option:first').prop('selected', 'selected'); 
}); 

làm việc cho tôi.

0

Nếu bạn đang lưu trữ các đối tượng jQuery của yếu tố lựa chọn:

var jQuerySelectObject = $("..."); 

... 

jQuerySelectObject.val(jQuerySelectObject.children().eq(0).val()); 
1

Sử dụng:

$("#selectbox option:first").val() 

Hãy tìm ra đơn giản làm việc trong this JSFiddle.

7

đơn giản như thế:

$('#target option:first').prop('selected', true); 
+1

điều này tốt hơn nhiều –

0

Sử dụng:

alert($("#target option:first").text()); 
1

Trên mặt sau của bài trả lời của James Lee Baker, tôi thích giải pháp này vì nó loại bỏ sự phụ thuộc vào sự hỗ trợ trình duyệt cho: đầu tiên: chọn ...

$('#target').children().prop('selected', false); 
$($('#target').children()[0]).prop('selected', 'selected'); 
1

Nó chỉ hoạt động cho tôi bằng cách sử dụng trình kích hoạt ('thay đổi') ở cuối, như sau:

$("#target option:first").attr('selected','selected').trigger('change'); 
0

Kiểm tra phương pháp này tốt nhất sử dụng jQuery với ECMAScript 6:

$('select').each((i, item) => { 
    var $item = $(item); 
    $item.val($item.find('option:first').val()); 
}); 
1

Đối với tôi nó chỉ làm việc khi tôi đã thêm đoạn mã sau:

.change();

Đối với tôi nó chỉ làm việc khi Tôi đã thêm mã sau đây: Vì tôi muốn "đặt lại" biểu mẫu, nghĩa là, hãy chọn tất cả các tùy chọn đầu tiên của tất cả các lựa chọn s của mẫu, tôi đã sử dụng đoạn mã sau:

$('form').find('select').each(function(){ $(this).val($("select option:first").val()); $(this).change(); });

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