Подтвердить что ты не робот

Какой селектор мне нужен, чтобы выбрать опцию по ее тексту?

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

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

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

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

4b9b3361

Ответ 1

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

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

Демо скрипка

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

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

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

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

Ответ 2

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

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

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

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

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

$('select:has(option:contains(abc))')

Ответ 3

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

$('#mySelect option:contains(' + value + ')').each(function(){
    if ($(this).text() == value) {
        $(this).attr('selected', 'selected');
        return false;
    }
    return true;
});

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

$("#dropdownid option:contains(your selected text)").attr('selected', true);

Ответ 7

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

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

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

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

псевдокод:

$("#my-Select").val( getValOfText( myText ) );

Ответ 8

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

$('#select option:contains(ABC)').val();

Ответ 9

Это будет работать в jQuery 1.6 (обратите внимание на двоеточие перед открывающей скобкой), но сбой в новых версиях (1.10 в то время).

$('#mySelect option:[text=abc]")

Ответ 10

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

  var selectedText="YourMatchText";
    $('#YourDropdownId option').map(function () {
       if ($(this).text() == selectedText) return this;
      }).attr('selected', 'selected');
    });

Ответ 11

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

$('#mySelect option:contains(' + value + ')').attr('selected', 'selected');

Ответ 12

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

var result = $('#SubjectID option')
            .filter(function () 
             { return $(this).html() == "English"; }).val();

Переменная result будет возвращать индекс соответствующего текстового значения. Теперь я просто установлю его, используя индекс:

$('#SubjectID').val(result);

Ответ 13

Вы либо перебираете параметры, либо помещаете один и тот же текст внутри другого атрибута опции и выбираете с этим.

Ответ 14

Это также сработает.

$('# test'). find ( "select option: contains ('B')" ). filter ( ": selected" );

Ответ 15

Как описано в этот ответ, вы можете легко создать свой собственный селектор для hasText. Это позволяет найти параметр с $('#test').find('option:hastText("B")').val();

Здесь добавлен метод hasText:

 if( ! $.expr[':']['hasText'] ) {
     $.expr[':']['hasText'] = function( node, index, props ) {
       var retVal = false;
       // Verify single text child node with matching text
       if( node.nodeType == 1 && node.childNodes.length == 1 ) {
         var childNode = node.childNodes[0];
         retVal = childNode.nodeType == 3 && childNode.nodeValue === props[3];
       }
       return retVal;
     };
  }

Ответ 16

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

var options = $(dropdown).find('option');
var targetOption = $(options).filter(
function () { return $(this).html() == value; });

console.log($(targetOption).val());

Спасибо за все сообщения.

Ответ 17

Для jQuery 3:

$("#myDiv select").val("text");