2009-12-20 4 views
1

의 필터 내용 I 한 다운 메뉴 다음 드롭 : jQuery를 사용jQuery를 선택하고 <option>

<select id="target"> 
    <option value="0">Zero ($123.45)</option> 
    <option value="1">One ($99.99)</option> 
    <option value="2">Two ($4.50)</option> 
</select> 

, 내가 선택한 옵션의 () 괄호의 내용을 선택 할 수있는 방법, 즉 123.45, 99.99 또는 4.50?

지금까지 내가 가진 : 그냥 생각 Zero ($123.45) 또는 동등한를 제공

$("select#target option:selected").contents(); 

합니다. 찾고자하는 번호를 얻기 위해 어떻게 더 필터링 할 수 있습니까? 사전에

감사합니다.

+1

을 정규 표현식으로! 예! – Skilldrick

답변

3

내가 jQuery를 함께 할 수있는 가장 관용적 인 방법은

$("#target :selected").text().match(/\((.+)\)/).pop() 
이라고 생각을

정규식은 일반적으로 자바 스크립트에서 텍스트를 일치시키는 가장 좋은 방법이며이 코드 스타일은 일반적인 jQuery 방법 인 chai 불필요한 지역 변수를 도입하지 않으며, 추한 색인 역 참조 연산을 포함하지 않습니다. 나는 또한 더 작은 형태로 선택기를 썼다.

4

시도 :

var a = $("select#target option:selected").contents(); 
var bracketed = a.replace(/\(([^)]*)\)/g, "$1"); 

또는, 당신은 정규식 사용하지 않으려면 :

var a = $("select#target option:selected").contents(); 
var bracketed = a.split('(')[1].split(')')[0]; 
4

또한 단지 각각의 값 속성으로 그 달러 값을 사용할 수 있습니다

<option value="$123.45">Zero ($123.45)</option> 
    etc... 

다음을 얻기 위해이 jQuery를 사용

var a = $('select#target option:selected').attr('value'); 
+0

나는이 제안을 좋아한다. 텍스트 구문 분석은 작동하지만 변경 사항이있을 때 길 아래로 약간 덜 유연하게 보입니다 (정규 표현식을 사용하여 변형을 테스트하지 않는 한). 클래스를 좀 더 구체적으로 정의 할 수 있고 텍스트만큼이나 변경되지는 않을 것이므로 아마도 priceXXXXX-XX 클래스를 사용하여 구문 분석을 제안 할 것입니다. –

관련 문제