O jQuery remove opções da seleção


221

Eu tenho uma página com 5 seleciona que todos têm um nome de classe 'ct'. Preciso remover a opção com o valor 'X' de cada seleção durante a execução de um evento onclick. Meu código é:

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

Onde eu estou errando?


Este trabalho bem: $('select').children('option[value="X"]').remove();
劉鎮瑲

Respostas:


451

Tente o seguinte:

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

Ou, para ser mais conciso, isso também funcionará:

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

1
Isso funcionou para mim. Obrigado. Qual é a sintaxe para limitar isso a .ct com um valor selecionado = ''?
user135498

2
Isso é o mais fácil se você não precisa saber o valor. Por exemplo, removendo a primeira opção $ ("# affiliate") [0] [0] .remove ();
ladieu

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

Ou apenas

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

O ponto principal é que findpega uma sequência de seleção, alimentando-a, xvocê está procurando elementos nomeados x.


5
+1 Eu gosto desta resposta, acho que é melhor, porque eu posso testar 'X' como parte ou como parte do elemento valuefor<select>
shareef

1
Eu usei esta resposta como eu tinha que remover todos os outros do que val = 0. i utilizado opções = 0 e trabalhou como charme :)!
Lakshman Pilaka

31

find()leva um seletor, não um valor. Isso significa que você precisa usá-lo da mesma maneira que usaria a função jQuery regular ( $('selector')).

Portanto, você precisa fazer algo assim:

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

Veja o jQuery find docs.


1
muito melhor no caso em que você está passando uma variável ao acrescentar
Neurothustra

3

Funciona na marca de opção ou no campo de texto:

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

1

se seu menu suspenso estiver em uma tabela e você não tiver um ID para ele, poderá usar o seguinte jquery:

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

1

Para jquery <1.8, você pode usar:

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

para remover um intervalo específico das opções selecionadas.


1

Quando fiz apenas uma remoção, a opção permaneceu no ddl na exibição, mas desapareceu no html (se você inspecionar a página)

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

1

Iterando uma lista e removendo vários itens usando uma localização. A resposta contém uma matriz de números inteiros. $ ('# OneSelectList') é uma lista de seleção.

$.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");
    }
});
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.