jQuery loại bỏ các tùy chọn khỏi select


221

Tôi có một trang với 5 lựa chọn mà tất cả đều có tên lớp 'ct'. Tôi cần xóa tùy chọn có giá trị 'X' khỏi mỗi lựa chọn trong khi chạy một sự kiện onclick. Mã của tôi là:

$(".ct").each(function() {
    $(this).find('X').remove();
   });

Tôi làm sai ở đâu?


Công việc này cũng: $('select').children('option[value="X"]').remove();
劉鎮瑲

Câu trả lời:


451

Thử cái này:

$(".ct option[value='X']").each(function() {
    $(this).remove();
});

Hoặc ngắn gọn hơn, điều này cũng sẽ hoạt động tốt:

$(".ct option[value='X']").remove();

1
Điều này làm việc cho tôi. Cảm ơn. Sytax là gì để giới hạn điều này thành .ct với giá trị được chọn = ''?
user135498

2
Đây là cách dễ nhất nếu bạn không cần biết giá trị. Ví dụ: xóa tùy chọn đầu tiên $ ("# chi nhánh") [0] [0] .remove ();
ladieu

55
$('.ct option').each(function() {
    if ( $(this).val() == 'X' ) {
        $(this).remove();
    }
});

Hoặc chỉ

$('.ct option[value="X"]').remove();

Điểm chính là findlấy một chuỗi chọn, bằng cách cung cấp cho nó, xbạn đang tìm kiếm các phần tử được đặt tên x.


5
1 i như câu trả lời này tôi nghĩ rằng nó tốt hơn, vì tôi có thể kiểm tra 'X' là như thế nào hoặc một phần của valuecho <select>yếu tố
Shareef

1
Tôi đã sử dụng câu trả lời này vì tôi phải xóa tất cả các tùy chọn khác ngoài val = 0. tôi đã sử dụng! = 0 và hoạt động như bùa mê :)
Lakshman Pilaka

31

find()mất một bộ chọn, không phải là một giá trị. Điều này có nghĩa là bạn cần sử dụng nó giống như cách bạn sẽ sử dụng hàm jQuery thông thường ( $('selector')).

Vì vậy, bạn cần phải làm một cái gì đó như thế này:

$(this).find('[value="X"]').remove();

Xem các tài liệu tìm kiếm jQuery .


1
tốt hơn nhiều trong trường hợp bạn chuyển một biến sang phần phụ
Neurothustra

3

Nó hoạt động trên thẻ tùy chọn hoặc trường văn bản:

$("#idname option[value='option1']").remove();

1

nếu danh sách thả xuống của bạn nằm trong một bảng và bạn không có id cho nó thì bạn có thể sử dụng jquery sau:

var select_object = purchasing_table.rows[row_index].cells[cell_index].childNodes[1];
$(select_object).find('option[value='+site_name+']').remove();

1

Đối với jquery <1.8, bạn có thể sử dụng:

$('#selectedId option').slice(index1,index2).remove()

để loại bỏ một phạm vi đặc biệt của các tùy chọn được chọn.


1

Khi tôi chỉ xóa một tùy chọn vẫn còn trong ddl trên khung nhìn, nhưng đã biến mất trong html (nếu bạn kiểm tra trang)

$("#ddlSelectList option[value='2']").remove(); //removes the option with value = 2
$('#ddlSelectList').val('').trigger('chosen:updated'); //refreshes the drop down list

1

Lặp lại một danh sách và loại bỏ nhiều mục bằng cách tìm. Đáp ứng chứa một loạt các số nguyên. $ ('# OneSelectList') là danh sách chọn.

$.ajax({
    url: "Controller/Action",
    type: "GET",
    success: function (response) {
        // Take out excluded years.
        $.each(response, function (j, responseYear) {
            $('#OneSelectList').find('[value="' + responseYear + '"]').remove();
        });
    },
    error: function (response) {
        console.log("Error");
    }
});
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.