<select>
텍스트가 특정 값과 같은 옵션이 있는지 확인해야 합니다.
예를 들어가 있으면 <option value="123">abc</option>
"abc"를 찾고 있습니다.
이 작업을 수행 할 수있는 선택기가 있습니까?
$('#select option[value="123"]');
텍스트 와 비슷 하지만 비슷한 것을 찾고 있습니다.
<select>
텍스트가 특정 값과 같은 옵션이 있는지 확인해야 합니다.
예를 들어가 있으면 <option value="123">abc</option>
"abc"를 찾고 있습니다.
이 작업을 수행 할 수있는 선택기가 있습니까?
$('#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()
하면 설정을 변경하는 것과 같은 이벤트를 사용할 수 있습니다 .
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 ) );
"#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);
이 답변에 설명 된 것처럼 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의 대답도 좋습니다 ... 무엇을 받아 들여야할지 모르겠습니다.