Есть ли решение JQuery для удаления элемента из выпадающего списка по отображаемому тексту - PullRequest
2 голосов
/ 14 января 2010

Я вижу несколько примеров удаления элемента из выпадающего списка по значению элемента (например, этот вопрос ), но есть ли способ удалить элемент из выпадающего списка, если все, что я знаю такое текст на дисплее?

Ответы [ 2 ]

8 голосов
/ 14 января 2010

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

$("#Select>option:contains(yourtext)").remove();

Локально протестировано и работает. Точный фрагмент кода, относящийся ко мне, был:

<select id="FundManager1" class="FundManagerSelect">
    <option>Fund Manager 1</option>
    <option>Fund Manager 2</option>
    <option>Fund Manager 3</option>
</select>

Тогда jQuery:

$(document).ready(function(){
    alert($("#FundManager1>option").length);  //alerts '3'
    $("#FundManager1>option:contains(1)").remove();
    alert($("#FundManager1>option").length);  //alerts '2'
});

Вы всегда можете поместить это в функцию:

function RemoveOption(SelectId, TextVal) {
    $("#" + SelectId + ">option:contains(" + TextVal + ")").remove();
}

RemoveOption("FundManager1", "1");

Дальнейшее редактирование для вопроса выбора класса:

Для селектора классов замените «#» на «.» как и следовало ожидать:

$(".YourSelectClass>option:contains(yourtext)").remove();

И так как это просто выбор, вы можете ускорить его, комбинируя с селектором элемента:

$("select.YourSelectClass>option:contains(yourtext)").remove();
4 голосов
/ 14 января 2010

Полагаю, вы можете перебрать их:

$('select option').each(function()
{
    if ($(this).text() == 'something')
    {
        $(this).remove();
    }
});

Редактировать: Ответ Джеймса Висмана более лаконичен, но это может быть проще, если в опции есть неловкие символы, которые иначе мешали бы синтаксису селектора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...