Xóa một mục khỏi hộp chọn


269

Làm cách nào để xóa các mục khỏi hoặc thêm các mục vào hộp chọn? Tôi đang chạy jQuery, nên làm cho công việc dễ dàng hơn. Dưới đây là một ví dụ chọn hộp.

<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>    
</select>

Câu trả lời:


491

Xóa một tùy chọn:

$("#selectBox option[value='option1']").remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>	
</select>

Thêm một tùy chọn:

$("#selectBox").append('<option value="option5">option5</option>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>	
</select>


7
Nếu bạn cần xóa một tùy chọn và chọn một tùy chọn khác: $ ('# selectBox'). Val ('tùy chọn 2'). Find ('tùy chọn [value = "tùy chọn1"]'). Remove ();
Radu Maris

8
Thành thật mà nói, tôi nghĩ rằng cách các hộp chọn được thao tác thông qua javascript là một trong những điều khó hiểu nhất từ ​​trước đến nay, ngay cả khi bạn có hiểu biết khá tốt về các công cụ chọn và DOM.
Tacroy

79

Bạn có thể xóa mục đã chọn bằng cách này:

$("#selectBox option:selected").remove();

Điều này rất hữu ích nếu bạn có một danh sách và không có danh sách thả xuống.


Nó đang xóa mọi thứ cho tôi ... Đợi tôi đang sử dụng Chọn với nhiều thuộc tính. Làm thế nào tôi có thể loại bỏ nó khỏi nhiều lựa chọn?
Akshay

27
window.onload = function ()
{   
    var select = document.getElementById('selectBox');
    var delButton = document.getElementById('delete');

    function remove()
    {
        value = select.selectedIndex;
        select.removeChild(select[value]);
    }

    delButton.onclick = remove;    
}

Để thêm mục tôi sẽ tạo hộp chọn thứ hai và:

var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');

function add()
{
    value1 = select2.selectedIndex;
    select.appendChild(select2[value1]);    
}

addSelect.onclick = add;

Không phải jQuery.


4
@JBeckton: nhìn lại bài viết này 4 năm trước tôi tự cười mình và bạn nói đúng :)
Adriana

25

Để xóa một mục

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

Để thêm một mục

$("#mySelect").append('<option value="option1">Option</option>');

Để kiểm tra một tùy chọn

$('#yourSelect option[value=yourValue]').length > 0;

Để xóa tùy chọn đã chọn

$('#mySelect :selected').remove(); 


18

Tôi thấy plugin thao tác chọn hộp jQuery hữu ích cho loại điều này.

Bạn có thể dễ dàng xóa một mục theo chỉ mục, giá trị hoặc biểu thức chính quy.

removeOption(index/value/regex/array[, selectedOnly])

Remove an option by
- index: $("#myselect2").removeOption(0);
- value: $("#myselect").removeOption("Value");
- regular expression: $("#myselect").removeOption(/^val/i);
- array $("#myselect").removeOption(["myselect_1", "myselect_2"]);

Để loại bỏ tất cả các tùy chọn, bạn có thể làm $("#myselect").removeOption(/./);.


5
-1 vì điều này có thể được thực hiện với plugin w / oa bằng cách sử dụng jQuery và lập trình cơ bản.
Slopeside Creative

Why 1 tại sao phát minh lại bánh xe
John Hascall

9

Thêm / xóa giá trị động mà không cần mã cứng:

// xóa giá trị khỏi chọn động

$("#id-select option[value='" + dynamicVal + "']").remove();

// Thêm giá trị động để chọn

$("#id-select").append('<option value="' + dynamicVal + '">' + dynamicVal + '</option>');



5

Chỉ cần tăng cường điều này cho bất cứ ai tìm kiếm, bạn cũng có thể chỉ:

$("#selectBox option[value='option1']").hide();

$("#selectBox option[value='option1']").show();

Tôi nghĩ rằng điều này thay đổi phụ thuộc vào trình duyệt. Nó chỉ có thể vô hiệu hóa tùy chọn cụ thể đó.
Adam Ware

Tôi không khuyên dùng phương pháp này, vì nó là trình duyệt cụ thể.
Scott Shaw-Smith

Đây là một bài viết cũ nhưng tôi muốn bình luận về điều này. Mặc dù đây là một cách rất hay để xử lý tùy chọn chọn, nhưng nó không được khuyến khích vì IE không hỗ trợ nó
Ahmed Ali

4

JavaScript

function removeOptionsByValue(selectBox, value)
{
  for (var i = selectBox.length - 1; i >= 0; --i) {
    if (selectBox[i].value == value) {
      selectBox.remove(i);
    }
  }
}

function addOption(selectBox, text, value, selected)
{
  selectBox.add(new Option(text, value || '', false, selected || false));
}

var selectBox = document.getElementById('selectBox');

removeOptionsByValue(selectBox, 'option3');
addOption(selectBox, 'option5', 'option5', true);
<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>	
</select>

jQuery

jQuery(function($) {
  $.fn.extend({
    remove_options: function(value) {
      return this.each(function() {
        $('> option', this)
          .filter(function() {
            return this.value == value;
          })
          .remove();
      });
    },
    add_option: function(text, value, selected) {
      return this.each(function() {
        $(this).append(new Option(text, value || '', false, selected || false));
      });
    }
  });
});

jQuery(function($) {
  $('#selectBox')
    .remove_options('option3')
    .add_option('option5', 'option5', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>	
</select>


2

Tôi đã phải xóa tùy chọn đầu tiên khỏi một lựa chọn, không có ID, chỉ có một lớp, vì vậy tôi đã sử dụng mã này thành công:

$('select.validation').find('option:first').remove();

0

Tôi chỉ muốn đề xuất một cách khác để thêm một option. Thay vì thiết lập valuetextnhư một chuỗi, người ta cũng có thể làm:

var option = $('<option/>')
                  .val('option5')
                  .text('option5');

$('#selectBox').append(option);

Đây là một giải pháp ít xảy ra lỗi khi thêm động các giá trị và văn bản của tùy chọn.


Tôi không phải là downvoter nhưng có vẻ như bạn đã trả lời OP nửa chừng với cách thêm tùy chọn, nhưng không phải cách loại bỏ tùy chọn.
John Odom

0

Nếu ai đó cần xóa TẤT CẢ các tùy chọn bên trong một lựa chọn, tôi đã thực hiện chức năng litle.

Tôi hy vọng bạn thấy nó hữu dụng

var removeAllOptionsSelect = function(element_class_or_id){
    var element = $(element_class_or_id+" option");
    $.each(element,function(i,v){
        value = v.value;
        $(element_class_or_id+" option[value="+value+"]").remove(); 
    })
}

Chỉ phải chạy

removeAllOptionsSelect("#contenedor_modelos");

2
Không phải là kết quả bằng $('#contenedor_modelos').empty();? Rất vui khi thấy một số hành động mặc dù :)
MineSweeper

0

đây là chọn hộp html

<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>    
</select>

Khi bạn muốn loại bỏ hoàn toàn và thêm tùy chọn từ hộp chọn thì bạn có thể sử dụng mã này

$("#selectBox option[value='option1']").remove();
$("#selectBox").append('<option value="option1">Option</option>');

đôi khi chúng ta cần ẩn và hiển thị tùy chọn từ hộp chọn, nhưng không xóa thì bạn có thể sử dụng mã này

 $("#selectBox option[value='option1']").hide();
 $("#selectBox option[value='option1']").show();

đôi khi cần phải loại bỏ tùy chọn đã chọn khỏi hộp chọn

$('#selectBox :selected').remove();
$("#selectBox option:selected").remove();

Khi bạn cần loại bỏ tất cả các tùy chọn thì mã này

('#selectBox').empty();

Khi cần tùy chọn đầu tiên hoặc cuối cùng thì mã này

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
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.