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?

user135498
fonte
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();
Andrew Hare
fonte
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.

meder omuraliev
fonte
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.

TM.
fonte
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();
Ashu
fonte
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();
Mestre Shafiqur Rahman
fonte
1

Para jquery <1.8, você pode usar:

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

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

jajhonrod
fonte
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
Vishav Premlall
fonte
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");
    }
});
CYoung
fonte