jQuery entfernt Optionen aus der Auswahl


221

Ich habe eine Seite mit 5 Auswahlen, die alle den Klassennamen 'ct' haben. Ich muss die Option mit dem Wert 'X' aus jeder Auswahl entfernen, während ein Onclick-Ereignis ausgeführt wird. Mein Code lautet:

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

Wo gehe ich falsch?


Dies funktioniert gut: $('select').children('option[value="X"]').remove();
劉鎮 瑲

Antworten:


451

Versuche dies:

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

Oder um knapper zu sein, das wird genauso gut funktionieren:

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

1
Das hat bei mir funktioniert. Vielen Dank. Was ist die Systemsteuer, um dies auf .ct mit einem ausgewählten Wert = '' zu beschränken?
user135498

2
Dies ist am einfachsten, wenn Sie den Wert nicht kennen müssen. Entfernen Sie beispielsweise die erste Option $ ("# Affiliate") [0] [0] .remove ();
Ladieu

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

Oder nur

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

Der wichtigste Punkt ist, dass findeine Auswahlzeichenfolge verwendet wird. Wenn xSie sie eingeben, suchen Sie nach benannten Elementen x.


5
+1 Ich mag diese Antwort Ich denke, es ist besser, weil ich 'X' als Like oder Teil des valuefor- <select>Elements
testen kann

1
Ich habe diese Antwort verwendet, da ich alle Optionen außer val = 0 entfernen musste. Ich habe! = 0 verwendet und wie ein Zauber gearbeitet :)
Lakshman Pilaka

31

find()nimmt einen Selektor, keinen Wert. Dies bedeutet, dass Sie es genauso verwenden müssen wie die reguläre jQuery-Funktion ($('selector') ).

Deshalb müssen Sie so etwas tun:

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

Weitere Informationen finden Sie in den jQuery- Suchdokumenten.


1
viel besser für den Fall, dass Sie eine Variable an den Anhang übergeben
Neurothustra

3

Es funktioniert entweder mit Options-Tag oder Textfeld:

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

1

Wenn sich Ihr Dropdown-Menü in einer Tabelle befindet und Sie keine ID dafür haben, können Sie die folgende Abfrage verwenden:

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

1

Für jquery <1.8 können Sie verwenden:

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

um einen bestimmten Bereich der Auswahloptionen zu entfernen.


1

Als ich nur ein Entfernen machte, blieb die Option in der ddl in der Ansicht, war aber in der HTML verschwunden (wenn Sie die Seite inspizieren)

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

1

Durchlaufen einer Liste und Entfernen mehrerer Elemente mithilfe eines Suchvorgangs. Die Antwort enthält ein Array von Ganzzahlen. $ ('# OneSelectList') ist eine Auswahlliste.

$.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");
    }
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.