jQuery supprimer les options de sélection

221

J'ai une page avec 5 sélections qui ont toutes un nom de classe «ct». Je dois supprimer l'option avec une valeur de «X» de chaque sélection lors de l'exécution d'un événement onclick. Mon code est:

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

Où est-ce que je vais mal?

user135498
la source
Cela fonctionne bien: $('select').children('option[value="X"]').remove();
劉鎮 瑲

Réponses:

451

Essaye ça:

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

Ou pour être plus concis, cela fonctionnera tout aussi bien:

$(".ct option[value='X']").remove();
Andrew Hare
la source
1
Cela a fonctionné pour moi. Merci. Quelle est la syntaxe pour limiter cela à .ct avec une valeur sélectionnée = ''?
user135498
2
C'est le plus simple si vous n'avez pas besoin de connaître la valeur. Par exemple, supprimer la première option $ ("# affiliate") [0] [0] .remove ();
ladieu
55
$('.ct option').each(function() {
    if ( $(this).val() == 'X' ) {
        $(this).remove();
    }
});

Ou juste

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

Le point principal est que findprend une chaîne de sélection, en l'alimentant, xvous recherchez des éléments nommés x.

meder omuraliev
la source
5
+1 j'aime cette réponse je pense que c'est mieux parce que je peux tester 'X' comme comme ou une partie de l' élément valuefor<select>
shareef
1
J'ai utilisé cette réponse car j'ai dû supprimer toutes les options autres que val = 0. J'ai utilisé! = 0 et j'ai travaillé comme un charme :)
Lakshman Pilaka
31

find()prend un sélecteur, pas une valeur. Cela signifie que vous devez l'utiliser de la même manière que vous utiliseriez la fonction jQuery régulière ( $('selector')).

Par conséquent, vous devez faire quelque chose comme ceci:

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

Voir les documents de recherche jQuery .

TM.
la source
1
beaucoup mieux dans le cas où vous passez une variable à l'annexe
Neurothustra
3

Il fonctionne sur une balise d'option ou un champ de texte:

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

si votre liste déroulante est dans une table et que vous n'avez pas d'ID pour cela, vous pouvez utiliser le jquery suivant:

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

Pour jquery <1,8, vous pouvez utiliser:

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

pour supprimer une plage spécifique des options sélectionnées.

jajhonrod
la source
1

Quand j'ai fait juste une suppression, l'option est restée dans le ddl sur la vue, mais a disparu dans le html (si vous inspectez la page)

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

Itération d'une liste et suppression de plusieurs éléments à l'aide d'une recherche. La réponse contient un tableau d'entiers. $ ('# OneSelectList') est une liste de sélection.

$.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
la source