Как выбрать опцию по ее тексту?
мне нужно проверить, если a <select> имеет опцию, текст которой равен определенному значению.
например, если есть <option value="123">abc</option>, Я бы искал "abc".
есть ли селектор для этого?
Я ищу что-то похожее на $('#select option[value="123"]'); но для текста.
15 ответов:
это может помочь:
$('#test').find('option[text="B"]').val();это даст вам возможность с текстом
Bи не те, которые имеют текст, который содержитB. Надеюсь, это поможетдля последних версий jQuery выше не работает. прокомментировал тупик ниже, это то, что работает для jQuery 1.9.1:
$('#test option').filter(function () { return $(this).html() == "B"; }).val();
можно использовать
:contains()селектор для выбора элементов, содержащих определенный текст.
Например:$('#mySelect option:contains(abc)')чтобы проверить, является ли данный
<select>элемент имеет такую возможность, используйте.has()метод:if (mySelect.has('option:contains(abc)').length)найти все
<select>s, которые содержат такую опцию, используйте:has()селектор:$('select:has(option:contains(abc))')
ни одно из предыдущих предложений не работало для меня в jQuery 1.7.2, потому что я пытаюсь установить выбранный индекс списка на основе значения из текстового поля, а некоторые текстовые значения содержатся в нескольких вариантах. В итоге я использовал следующее:
$('#mySelect option:contains(' + value + ')').each(function(){ if ($(this).text() == value) { $(this).attr('selected', 'selected'); return false; } return true; });
я столкнулась с той же проблемой ниже рабочий код :
$("#test option").filter(function() { return $(this).text() =='Ford'; }).prop("selected", true);
Это лучший метод для выделения текста в выпадающем списке.
$("#dropdownid option:contains(your selected text)").attr('selected', true);
я попробовал несколько из этих вещей, пока я не получил один для работы в 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 ) );
Это будет работать в jQuery 1.6 (обратите внимание на двоеточие перед открывающей скобкой), но не работает в более новых версиях (1.10 в то время).
$('#mySelect option:[text=abc]")
для jquery версии 1.10.2 ниже работал для меня
var selectedText="YourMatchText"; $('#YourDropdownId option').map(function () { if ($(this).text() == selectedText) return this; }).attr('selected', 'selected'); });
как описано в ответ, вы можете легко создать свой собственный селектор для 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; }; }
это работает для меня
var options = $(dropdown).find('option'); var targetOption = $(options).filter( function () { return $(this).html() == value; }); console.log($(targetOption).val());Спасибо за все посты.
Comments