Bir seçim kutusundan öğe kaldırma


269

Seçim kutusundaki öğeleri nasıl kaldırabilir veya bu kutuya nasıl öğe ekleyebilirim? Görevi kolaylaştırmak için jQuery çalıştırıyorum. Aşağıda bir örnek seçim kutusu bulunmaktadır.

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

Yanıtlar:


491

Bir seçeneği kaldırı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>

Bir seçenek ekleyin:

$("#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
Bir seçeneği kaldırmanız ve başka bir seçeneği seçmeniz gerekiyorsa: $ ('# selectBox'). Val ('seçenek2'). Find ('seçenek [değer = "seçenek1"]'). Remove ();
Radu Maris

8
Dürüst olmak gerekirse, seçim kutularının javascript yoluyla manipüle edilme şeklinin, seçiciler ve DOM hakkında oldukça iyi bir anlayışa sahip olsanız bile şimdiye kadarki en kafa karıştırıcı şeylerden biri olduğunu düşünüyorum.
Tacroy

79

Seçilen öğeyi bununla silebilirsiniz:

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

Bu, bir listeniz varsa ve bir açılır listeniz yoksa kullanışlıdır.


Benim için her şeyi kaldırıyor ... Bekle ben birden çok özelliği ile Select kullanıyorum. Birden fazla seçimden nasıl kaldırabilirim?
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;    
}

Öğe eklemek için ikinci seçim kutusu oluşturacağım ve:

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

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

addSelect.onclick = add;

Gerçi jQuery değil.


4
@JBeckton: Bu yazılı 4 yıl önce geriye baktığımda kendime gülüyorum ve haklısın :)
Adriana

25

Bir Öğeyi Kaldırmak için

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

Öğe eklemek için

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

Bir seçeneği kontrol etmek için

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

Seçilen bir seçeneği kaldırmak için

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


18

Bu tür şeyler için jQuery seçim kutusu manipülasyon eklentisi yararlı buluyorum .

Bir öğeyi dizin, değer veya normal ifadeye göre kolayca kaldırabilirsiniz.

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

Tüm seçenekleri kaldırmak için yapabilirsiniz $("#myselect").removeOption(/./);.


5
-1 çünkü bu jQuery ve temel programlama kullanılarak eklenti olmadan yapılabilir.
Slopeside Creative

ᕀ 1 neden tekerleği yeniden icat etti
John Hascall

9

Sabit kod olmadan dinamik olarak değer ekleme / kaldırma:

// dinamik olarak seçimdeki değeri kaldır

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

// Seçmek için dinamik değer ekle

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



5

Sadece bunu arayan herkes için artırmak için, ayrıca şunları da yapabilirsiniz:

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

ve

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

Bunun tarayıcıya bağlı olarak değiştiğini düşünüyorum. Sadece belirli bir seçeneği devre dışı bırakabilir.
Adam Ware

Tarayıcıya özel olduğu için bu yöntemi önermiyorum.
Scott Shaw-Smith

Bu eski bir gönderi ama bu konuda yorum yapmak istiyorum. Bu, seçme seçeneği ile başa çıkmak için çok güzel bir yol olsa da, IE desteklemediğinden önerilmez
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

Ben hiçbir kimlik, sadece bir sınıf ile bir seçim ilk seçeneği kaldırmak zorunda kaldı, bu yüzden başarıyla bu kodu kullanılır:

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

0

Sadece eklemek için başka bir yol önermek istiyorum option. valueVe öğesini textdize olarak ayarlamak yerine şunları da yapabilirsiniz:

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

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

Bu, seçeneklerin değerlerini ve metinlerini dinamik olarak eklerken daha az hataya açık bir çözümdür.


Ben downvoter değilim ama OP nasıl bir seçenek eklemek, ancak bir seçeneği kaldırmak için değil yarıya cevap gibi görünüyor.
John Odom

0

Birisi bir seçim içindeki TÜM seçenekleri silmek gerekiyorsa , bir litle işlevi yaptım.

Umarım faydalı bulursun

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

Sadece koşmak zorundasın

removeAllOptionsSelect("#contenedor_modelos");

2
Sonuç eşit değil $('#contenedor_modelos').empty();mi? Yine de bazı eylemleri görmek güzel :)
MineSweeper

0

bu seçim kutusu 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>

seçim kutusundan seçeneği tamamen kaldırmak ve eklemek istediğinizde bu kodu kullanabilirsiniz

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

bazen seçim kutusundaki seçeneği gizlememiz ve göstermemiz gerekir, ancak kaldırmayın, bu kodu kullanabilirsiniz

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

bazen seçilen seçeneği seçim kutusundan kaldırmanız gerekir

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

tüm seçeneği kaldırmanız gerektiğinde bu kod

('#selectBox').empty();

ne zaman ilk seçenek veya son sonra bu kodu gerekir

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.