Làm cách nào để chọn phần tử đầu tiên trong menu thả xuống bằng jquery?


106

Tôi muốn biết cách chọn tùy chọn đầu tiên trong tất cả các thẻ chọn trên trang của mình bằng jquery.

đã thử cái này:

$('select option:nth(0)').attr("selected", "selected"); 

Nhưng không hoạt động

Câu trả lời:


193

Thử thứ này đi...

$('select option:first-child').attr("selected", "selected");

Một tùy chọn khác sẽ là tùy chọn này, nhưng nó sẽ chỉ hoạt động cho một danh sách thả xuống tại một thời điểm như được mã hóa bên dưới:

var myDDL = $('myID');
myDDL[0].selectedIndex = 0;

Hãy xem bài đăng này về cách đặt dựa trên giá trị, nó thú vị nhưng sẽ không giúp bạn cho vấn đề cụ thể này:

Thay đổi giá trị đã chọn của danh sách thả xuống bằng jQuery


chỉ cần thay đổi myid để chọn như tôi muốn tất cả các chọn thẻ
Amr Elgarhy

26
bây giờ trong jQuery, bạn có thể truy cập các thuộc tính thông qua .prop()phương thức. Vì vậy, bạn có thể sử dụng $("select").prop("selectedIndex",0);một cách nhanh chóng để chọn tùy chọn đầu tiên trên tất cả các danh sách thả xuống.
CBarr

3
Bạn có biết nếu điều này sẽ kích hoạt sự kiện 'thay đổi' trong tất cả các trình duyệt chỉ bằng cách đặt thuộc tính không? Nó có vẻ như trong Chrome, nhưng chưa thử nghiệm rộng rãi. Tôi đã suy nghĩ về việc thêm một cái khác $('select').trigger('change');để đề phòng. Cảm ơn!
Brian Armstrong,

3
var myDDL = $('myID')nên có băm trong bộ chọn để trở thànhvar myDDL = $('#myID')
user1069816

1
Phương pháp này hoạt động tốt đối với tôi:$('select option').first().prop('selected',true);
Lorenzo Magon

13

Bộ chọn của bạn sai, có thể bạn đang tìm kiếm

$('select option:nth-child(1)')

Điều này cũng sẽ hoạt động:

$('select option:first-child')

3
Chỉ mục bộ chọn CSS thứ n bắt đầu từ 1, không phải 0
Sergey

10

Giải pháp thay thế tương tự cho RSolgberg, giải pháp kích hoạt 'onchange'sự kiện nếu có:

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

Làm thế nào để thực hiện tùy chọn đầu tiên của <select> được chọn với jQuery?


1
Điều này hoạt động tốt hơn câu trả lời được chấp nhận nếu bạn phải thay đổi tùy chọn đã chọn nhiều lần. Ví dụ: nếu bạn lọc các tùy chọn của mình và hiển thị một phần của chúng.
Guillaume Renoult


4

Những gì bạn muốn có lẽ là:

$("select option:first-child")

Mã này là gì

attr("selected", "selected");

đang làm là đặt thuộc tính "đã chọn" thành "đã chọn"

Nếu bạn muốn các tùy chọn đã chọn, bất kể đó có phải là con đầu tiên hay không, bộ chọn là:

$("select").children("[selected]")

1
Thay thế attrbằng propnếu bạn đang sử dụng jQuery 1.6+
Jesan Fafon

2

Tôi đang trả lời vì các câu trả lời trước đã ngừng hoạt động với phiên bản mới nhất của jQuery. Tôi không biết khi nào nó ngừng hoạt động, nhưng tài liệu nói rằng .prop () là phương thức được ưa thích để lấy / đặt thuộc tính kể từ jQuery 1.6.

Đây là cách tôi làm cho nó hoạt động (với jQuery 3.2.1):

$('select option:nth-child(1)').prop("selected", true);

Tôi đang sử dụng knockoutjs và các ràng buộc thay đổi không kích hoạt với mã trên, vì vậy tôi đã thêm .change () vào cuối.

Đây là những gì tôi cần cho giải pháp của mình:

$('select option:nth-child(1)').prop("selected", true).change();

Xem ghi chú .prop () trong tài liệu tại đây: http://api.jquery.com/prop/


2

Đây là một javascriptgiải pháp đơn giản hoạt động trong hầu hết các trường hợp:

document.getElementById("selectId").selectedIndex = "0";

1

nếu bạn muốn kiểm tra văn bản của tùy chọn đã chọn bất kể nó có phải là con đầu tiên hay không.

var a = $("#select_id option:selected").text();
alert(a); //check if the value is correct.
if(a == "value") {-- execute code --}

Đã lưu cho tôi một tìm kiếm thứ hai. Đây là khá nhiều thứ mà tôi đang tìm kiếm, mặc dù tôi quan tâm đến việc thay đổi giá trị hơn là kiểm tra nó. $('#myID option:selected').text('NEW STRING');
Ricky Payne,

1
    var arr_select_val=[];

    $("select").each(function() { 
        var name=this.name;
            arr_select_val[name]=$('select option:first-child').val();
    });


// Process the array object
     $('.orders_status_summary_div').print(arr_select_val);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.