การลบรายการออกจากกล่องที่เลือก


269

ฉันจะลบรายการออกจากหรือเพิ่มรายการลงในกล่องที่เลือกได้อย่างไร ฉันกำลังเรียกใช้ jQuery ว่าควรทำให้งานง่ายขึ้น ด้านล่างเป็นตัวอย่างให้เลือกกล่อง

<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>

คำตอบ:


491

ลบตัวเลือก:

$("#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>

เพิ่มตัวเลือก:

$("#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
หากคุณต้องการลบตัวเลือกและเลือกตัวเลือกอื่น: $ ('# selectBox'). val ('option2'). find ('ตัวเลือก [ค่า = "option1"]'). remove ();
Radu Maris

8
สุจริตฉันคิดว่าวิธีการเลือกกล่องที่มีการจัดการผ่านทางจาวาสคริปต์เป็นหนึ่งในสิ่งที่ทำให้เกิดความสับสนมากที่สุดที่เคยแม้ว่าคุณจะมีความเข้าใจที่ดีของตัวเลือกและ DOM
Tacroy

79

คุณสามารถลบรายการที่เลือกด้วยสิ่งนี้:

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

สิ่งนี้มีประโยชน์หากคุณมีรายการและไม่ใช่รายการแบบหล่นลง


กำลังลบทุกอย่างสำหรับฉัน ... รอฉันใช้ Select with หลายคุณสมบัติ ฉันจะลบออกจากการเลือกหลายรายการได้อย่างไร
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;    
}

เพื่อเพิ่มรายการฉันจะสร้างกล่องเลือกที่สองและ:

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

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

addSelect.onclick = add;

ไม่ใช่ jQuery


4
@JBeckton: มองกลับไปที่นี้เขียน 4 ปีที่ผ่านมาผมหัวเราะเยาะตัวเองและคุณมีสิทธิ :)
Adriana

25

ในการลบรายการ

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

ในการเพิ่มรายการ

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

เพื่อตรวจสอบตัวเลือก

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

เพื่อลบตัวเลือกที่เลือก

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


18

ฉันพบว่าปลั๊กอินการจัดการกล่องเลือก jQuery มีประโยชน์สำหรับสิ่งประเภทนี้

คุณสามารถลบรายการโดยดัชนีค่าหรือ regex

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"]);

$("#myselect").removeOption(/./);ในการลบตัวเลือกทั้งหมดที่คุณสามารถทำได้


5
-1 เพราะสิ่งนี้สามารถทำได้โดยใช้ปลั๊กอินโดยใช้ jQuery และการเขียนโปรแกรมพื้นฐาน
Creative Slopeside

ᕀ 1 ทำไมต้องบูรณาการล้อใหม่
John Hascall

9

การเพิ่ม / ลบค่าแบบไดนามิกโดยไม่ต้องใช้รหัสยาก:

// ลบค่าออกจากการเลือกแบบไดนามิก

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

// เพิ่มค่าแบบไดนามิกเพื่อเลือก

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



5

เพียงเพื่อเพิ่มสิ่งนี้ให้กับทุกคนที่กำลังมองหาคุณยังสามารถ:

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

และ

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

ฉันคิดว่ามันแตกต่างกันไปขึ้นอยู่กับเบราว์เซอร์ มันอาจปิดการใช้งานตัวเลือกนั้น
Adam Ware

ฉันไม่แนะนำวิธีนี้เนื่องจากเฉพาะเบราว์เซอร์
Scott Shaw-Smith

นี่คือโพสต์เก่า แต่ฉันต้องการที่จะแสดงความคิดเห็นเกี่ยวกับเรื่องนี้ แม้ว่านี่จะเป็นวิธีที่ดีมากในการจัดการกับตัวเลือกที่เลือก แต่ก็ไม่แนะนำเนื่องจาก IE ไม่รองรับ
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

ฉันต้องลบตัวเลือกแรกออกจากตัวเลือกโดยไม่มี ID เพียงคลาสดังนั้นฉันจึงใช้รหัสนี้สำเร็จ:

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

0

optionผมแค่อยากจะขอแนะนำวิธีที่จะเพิ่มอีก แทนที่จะตั้งค่าvalueและtextเป็นสตริงสามารถทำได้:

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

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

นี่เป็นวิธีแก้ปัญหาข้อผิดพลาดน้อยเมื่อเพิ่มค่าและข้อความของตัวเลือกแบบไดนามิก


ฉันไม่ใช่ downvoter แต่ปรากฏว่าคุณตอบ OP ครึ่งทางด้วยวิธีเพิ่มตัวเลือก แต่ไม่ใช่วิธีลบตัวเลือก
John Odom

0

หากใครบางคนต้องการลบตัวเลือกทั้งหมดในตัวเลือกฉันได้ฟังก์ชั่น litle

ฉันหวังว่าคุณพบว่ามีประโยชน์

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(); 
    })
}

ต้องวิ่งเท่านั้น

removeAllOptionsSelect("#contenedor_modelos");

2
ผลลัพธ์ไม่เท่ากับ$('#contenedor_modelos').empty();หรือไม่ ดีใจที่ได้เห็นการกระทำบางอย่าง :)
MineSweeper

0

นี่คือกล่อง 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>

เมื่อคุณต้องการลบทั้งหมดและเพิ่มตัวเลือกจากกล่องเลือกจากนั้นคุณสามารถใช้รหัสนี้

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

บางครั้งเราจำเป็นต้องซ่อนและแสดงตัวเลือกจากกล่องที่เลือก แต่ไม่ต้องลบออกคุณสามารถใช้รหัสนี้ได้

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

บางครั้งจำเป็นต้องลบตัวเลือกที่เลือกออกจากกล่องเลือกจากนั้น

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

เมื่อคุณต้องการลบตัวเลือกทั้งหมดแล้วรหัสนี้

('#selectBox').empty();

เมื่อต้องการตัวเลือกแรกหรือสุดท้ายจากนั้นรหัสนี้

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.