JQuery удалить параметры из выбора

222

У меня есть страница с 5 выборами, которые все имеют имя класса 'ct'. Мне нужно удалить опцию со значением «X» из каждого выбора во время запуска события onclick. Мой код:

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

Куда я иду не так?

user135498
источник
Это хорошо работает: $('select').children('option[value="X"]').remove();
瑲 瑲

Ответы:

453

Попробуй это:

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

Или, если быть более кратким, это будет работать так же хорошо:

$(".ct option[value='X']").remove();
Эндрю Хэйр
источник
1
Это сработало для меня. Спасибо. Какой синтаксис ограничивает это .ct с выбранным значением = ''?
user135498
2
Это проще всего, если вам не нужно знать значение. Например, удаление первой опции $ ("# affiliate") [0] [0] .remove ();
Ladieu
55
$('.ct option').each(function() {
    if ( $(this).val() == 'X' ) {
        $(this).remove();
    }
});

Или просто

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

Суть в том, что findпринимает строку селектора, передавая ее, xвы ищете именованные элементы x.

медер омуралиев
источник
5
+1 я , как этот ответ я думаю , что его лучше , потому что я могу проверить «X» , как , например или часть valueдля <select>элемента
Шарифа
1
Я использовал этот ответ, так как мне пришлось удалить все опции, кроме val = 0. Я использовал! = 0 и работал как шарм :)
Лакшман Пилака
31

find()принимает селектор, а не значение. Это означает, что вам нужно использовать его так же, как и обычную функцию jQuery ($('selector') ).

Поэтому вам нужно сделать что-то вроде этого:

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

Посмотрите jQuery найти документы.

TM.
источник
1
намного лучше в случае, когда вы передаете переменную в
аппенди
3

Работает либо с тегом option, либо с текстовым полем:

$("#idname option[value='option1']").remove();
Ашу
источник
1

если ваш выпадающий список находится в таблице и у вас нет идентификатора для него, вы можете использовать следующий jquery:

var select_object = purchasing_table.rows[row_index].cells[cell_index].childNodes[1];
$(select_object).find('option[value='+site_name+']').remove();
Г-н Шафикур Рахман
источник
1

Для jquery <1.8 вы можете использовать:

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

удалить определенный диапазон выбранных опций.

jajhonrod
источник
1

Когда я только что удалил, опция оставалась в ddl в представлении, но пропала в html (если вы просматриваете страницу)

$("#ddlSelectList option[value='2']").remove(); //removes the option with value = 2
$('#ddlSelectList').val('').trigger('chosen:updated'); //refreshes the drop down list
Vishav Premlall
источник
1

Перебор списка и удаление нескольких элементов с помощью поиска. Ответ содержит массив целых чисел. $ ('# OneSelectList') - это список выбора.

$.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
источник