Какой селектор мне нужен, чтобы выбрать опцию по ее тексту? - PullRequest
187 голосов
/ 19 сентября 2010

Мне нужно проверить, есть ли у <select> опция, текст которой равен определенному значению.

Например, если есть <option value="123">abc</option>, я буду искать «abc».

Есть ли селектор для этого?

Я ищу что-то похожее на $('#select option[value="123"]');, но для текста.

Ответы [ 16 ]

299 голосов
/ 19 сентября 2010

Это может помочь:

$('#test').find('option[text="B"]').val();

Демонстрационная скрипка

Это даст вам возможность с текстом B, а не с текстом, содержащим B. Надеюсь, это поможет

Для последних версий jQuery вышеприведенное не работает. Как прокомментировано ниже Quandary , это то, что работает для jQuery 1.9.1:

$('#test option').filter(function () { return $(this).html() == "B"; }).val();

Обновленная скрипка

128 голосов
/ 19 сентября 2010

Вы можете использовать селектор :contains() для выбора элементов, содержащих определенный текст.
Например:

$('#mySelect option:contains(abc)')

Чтобы проверить, имеет ли данный элемент <select>такая опция, используйте метод .has() :

if (mySelect.has('option:contains(abc)').length)

Чтобы найти все <select> s, которые содержат такую ​​опцию, используйте селектор :has() :

$('select:has(option:contains(abc))')
30 голосов
/ 19 сентября 2012

Ни одно из предыдущих предложений не работало для меня в jQuery 1.7.2, потому что я пытаюсь установить выбранный индекс списка на основе значения из текстового поля, а некоторые текстовые значения содержатся в нескольких параметрах.В итоге я использовал следующее:

$('#mySelect option:contains(' + value + ')').each(function(){
    if ($(this).text() == value) {
        $(this).attr('selected', 'selected');
        return false;
    }
    return true;
});
16 голосов
/ 02 февраля 2016

Я столкнулся с той же проблемой ниже, это рабочий код:

$("#test option").filter(function() {
    return $(this).text() =='Ford';
}).prop("selected", true);

Демо: http://jsfiddle.net/YRBrp/83/

14 голосов
/ 15 июля 2015

Это сработало для меня: $("#test").find("option:contains('abc')");

11 голосов
/ 30 декабря 2016

Это лучший метод для выбора текста в выпадающем списке.

$("#dropdownid option:contains(your selected text)").attr('selected', true);
4 голосов
/ 06 декабря 2014

Я пробовал некоторые из этих вещей, пока не получил один для работы в Firefox и IE. Это то, что я придумал.

$("#my-Select").val($("#my-Select" + " option").filter(function() { return this.text == myText }).val());

другой способ написать это в более читаемом стиле:

var valofText = $("#my-Select" + " option").filter(function() {
    return this.text == myText
}).val();
$(ElementID).val(valofText);

псевдокод:

$("#my-Select").val( getValOfText( myText ) );
3 голосов
/ 15 сентября 2015

Использовать следующие

$('#select option:contains(ABC)').val();
1 голос
/ 13 марта 2018

Эта работа для меня

$('#mySelect option:contains(' + value + ')').attr('selected', 'selected');
1 голос
/ 13 апреля 2016

Для jquery версии 1.10.2 ниже работал у меня

  var selectedText="YourMatchText";
    $('#YourDropdownId option').map(function () {
       if ($(this).text() == selectedText) return this;
      }).attr('selected', 'selected');
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...