<select>
テキストが特定の値と等しいオプションがあるかどうかを確認する必要があります。
たとえば、がある場合<option value="123">abc</option>
、「abc」を探します。
これを行うセレクターはありますか?
Imに似て$('#select option[value="123"]');
いますが、テキストを探しています。
<select>
テキストが特定の値と等しいオプションがあるかどうかを確認する必要があります。
たとえば、がある場合<option value="123">abc</option>
、「abc」を探します。
これを行うセレクターはありますか?
Imに似て$('#select option[value="123"]');
いますが、テキストを探しています。
回答:
これは役立つかもしれません:
$('#test').find('option[text="B"]').val();
これは、B
テキストを含むオプションではなく、テキストを含むオプションを提供しますB
。お役に立てれば
jQueryの最近のバージョンでは、上記は機能しません。以下のQuandaryによるコメントのとおり、これは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>
ようなオプションを含むすべてのを見つけるには、:has()
セレクターを使用します。
$('select:has(option:contains(abc))')
:contains
今は決定的ではありませんね?
123abcdef
か?
テキストボックスの値に基づいてリストの選択したインデックスを設定しようとしているため、以前の提案はjQuery 1.7.2では機能しませんでした。また、いくつかのテキスト値が複数のオプションに含まれています。私は以下を使用してしまいました:
$('#mySelect option:contains(' + value + ')').each(function(){
if ($(this).text() == value) {
$(this).attr('selected', 'selected');
return false;
}
return true;
});
contains
完全に省略すると、実際にスピードアップするかもしれません。
$(this).parent().val($(this).val());
おそらく両方を行うことができますが、私にとっては、親だけを設定することでうまくいきval()
ました
私は以下の同じ問題に直面しましたが作業コードです:
$("#test option").filter(function() {
return $(this).text() =='Ford';
}).prop("selected", true);
これは私のために働きました: $("#test").find("option:contains('abc')");
$("#testselect").find("option:contains('option-text')").attr('value');
そうすれば.click()
、設定を変更するようなイベントを使用できます。
これは、ドロップダウンリストでテキストを選択するための最良の方法です。
$("#dropdownid option:contains(your selected text)").attr('selected', true);
this is your selected text plus more
。
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 ) );
"#my-Select" + " option"
何ですか?なぜ"#my-Select option"
ですか?
以下を使用
$('#select option:contains(ABC)').val();
これはjQuery 1.6(左角括弧の前のコロンに注意)で機能しますが、新しいリリース(現時点では1.10)では失敗します。
$('#mySelect option:[text=abc]")
$("#mySelect option").filter(function() { return this.text == "abc"; });
のjQueryの最新バージョンとの意志の仕事..それとも、おそらくあなたが使用することを好む他の方法...
以下のjqueryバージョン1.10.2では私のために働きました
var selectedText="YourMatchText";
$('#YourDropdownId option').map(function () {
if ($(this).text() == selectedText) return this;
}).attr('selected', 'selected');
});
この仕事は私にとって
$('#mySelect option:contains(' + value + ')').attr('selected', 'selected');
これは私にとってはうまくいきます:
var result = $('#SubjectID option')
.filter(function ()
{ return $(this).html() == "English"; }).val();
result
変数がマッチしたテキスト値のインデックスを返します。次に、インデックスを使用して設定します。
$('#SubjectID').val(result);
これも機能します。
$( '#test')。find( "select option:contains( 'B')")。filter( ":selected");
ABC
。
この回答で説明されているように、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());
すべての投稿をありがとう。
has
SLaksの答えは便利ですが、Floydsの答えのポイントも良いです...私は何を受け入れるかわかりません。