jQuery를 사용하여 선택의 모든 옵션을 얻는 방법은 무엇입니까?


406

ID를 전달하여 jQuery를 통해 선택의 모든 옵션을 얻는 방법은 무엇입니까?

나는 텍스트가 아닌 그들의 가치만을 얻으려고합니다.

답변:


612

사용하다:

$("#id option").each(function()
{
    // Add $(this).val() to your list
});

.each () | jQuery API 설명서


63
JavaScript 작업에는 jQuery가 필요하지 않습니다. jQuery는 JS 작업을 단순화하기 위해 선택하는 문제입니다.
ruuter

8
$ ( "# id option"). each (function (name, val) {var opt = val.text;});
kofifus

3
$.map훨씬 더 우아하고 오류가 적습니다 (아래 참조).
Elliot Cameron

1
$('#id option').map((index, option) => option.value): 콜백 서명이 "vanilla"JS map함수 ( (item, index) =>) 와 비교하여 어떻게 바뀌 었는지 주목하십시오
imrok

168

jQuery는 모르지만 select 요소를 얻으면 'options'객체가 포함되어 있다는 것을 알고 있습니다.

var myOpts = document.getElementById('yourselect').options;
alert(myOpts[0].value) //=> Value of the first option

74
+1. 평범한 오래된 DOM에 이미 매우 효율적인 구현이 구현되어있는 것들에 대해서는 jQuery의 복잡한 선택기 마술에 의존하지 마십시오.
bobince

19
왜 @bobince? 대부분 jQuery를 사용하는 경우 적은 코드로 작성하는 것이 더 빠르며이 인스턴스에서 일반 자바 스크립트로 전환해야하는지 파악하지 않는 것이 더 빠릅니다. 그리고 코드가 더 일관성이 있습니다.
Andrew

139

$.map 아마도 가장 효율적인 방법 일 것입니다.

var options = $('#selectBox option');

var values = $.map(options ,function(option) {
    return option.value;
});

선택한 옵션 $('#selectBox option:selected')만 원하는 경우 변경 옵션을 추가 할 수 있습니다 .

첫 번째 줄은 모든 확인란을 선택하고 jQuery 요소를 변수에 넣습니다. 그런 다음 .mapjQuery 의 함수 를 사용하여 해당 변수의 각 요소에 함수를 적용합니다. 우리가하고있는 모든 것은 우리가 관심있는 모든 요소의 가치를 돌려주는 것입니다. map 함수 안에서 반환하기 때문에 실제로 요청한대로 값의 배열을 만듭니다.


3
이것은 가장 우아한 솔루션 IMO입니다. 지도는이 상황에 정확히 맞는 매우 강력한 구조입니다.
hazerd

1
나는 당신의 해결책을 정말로 좋아합니다-그것은 내가했던 접근법입니다. 그러나 선택한 값만 원하면 훨씬 더 간단 $('#selectBox').val()합니다. 선택한 값의 배열을 반환합니다.
whoisthemachine

안녕하세요, @PCasagrande 사용자 정의 속성 이름 'data-type'이 있습니다. 솔루션을 사용하여이 가치를 어떻게 얻을 수 있습니까? 내가하고있는 것은 'option.data-type'이지만 NaN을 제공합니다. 미리 감사드립니다.
Me_developer

안녕하세요, @PCasagrande '$ (option, this) .attr ( "data-type")'을 수행하여 필요한 것을 얻었습니다. 그러나 더 좋은 것이 있으면 알려주세요. 감사. :)
Me_developer

'return option.attr ( "data-type");'할 수 있다고 생각합니다. 지도에서. 데이터 유형의 값 배열이 제공됩니다.
PCasagrande

74

일부 답변은을 사용 each하지만 map여기서 IMHO가 더 나은 대안입니다.

$("select#example option").map(function() {return $(this).val();}).get();

mapjQuery 에는 적어도 두 가지 기능이 있습니다. Thomas Petersen의 답변은 "Utilities / jQuery.map"을 사용합니다. 이 답변은 "여행 /지도"(따라서 좀 더 깔끔한 코드)를 사용합니다.

값으로 수행 할 작업에 따라 다릅니다. 예를 들어 함수에서 값을 반환하려는 map경우 더 나은 대안 일 수 있습니다. 그러나 값을 직접 사용하려는 경우에는 아마도 원할 것 each입니다.


4
실제로 $ (this) .val () 대신 this.value를 사용할 수 있습니다. 초기 선택기 (#example 옵션)에서 하위 항목을 찾아서 더 나은 결과를 얻을 수 있습니다. 그래도 끝에 get ()을 사용하면 좋지 않습니다.
Alex Barrett

1
@Alex Barret : jQuery를 전혀 사용하지 않고도이 문제를 해결할 수 있습니다. 요소를 인수로 사용하여 jQuery를 호출하면 요소가 jQuery 객체에 래핑됩니다 (즉, 트리 트래버 싱 없음, 즉 비싸지 않음). 아마도 미세 최적화 일 것입니다.
cic

지도 FTW. 이것이 정확히 수행되는 방법입니다. 결국 get ()은 불필요 해 보이지만 (DOM 노드를 반환하고 val ()은 이미 문자열을 제공하므로 ...?) var opts = $ ( '# cm_amt option'). map (function ( ) {return parseInt ($ (this) .val ());});
sbeam

3
@sbeam : "반환 값이 jQuery로 래핑 된 배열이므로 get()반환 된 객체가 기본 배열로 작업하는 것이 일반적 입니다." - api.jquery.com/map
CIC

그것은 매우 도움이되었습니다, 나는 텍스트가 값이 아닌 것을 원했기 때문에 text()대신에로 변경되었습니다 val(). 감사합니다 ! (나는 당신이 1000 이상을 겪게했다 ;->)
ParPar

52
$('select#id').find('option').each(function() {
    alert($(this).val());
});

1
선택기를 사용하지 않고 init의 변수에 요소를 캐시하기 때문에 티켓입니다.
Doug Beard

1
또한 $ (this) (찾고 있던 것)과 함께 작동합니다.
Hugh Seagraves

16
$("#id option").each(function()
{
    $(this).prop('selected', true);
});

는 있지만 올바른 방법은 요소의 DOM 속성을 설정하는 것입니다, 그래서 좋아한다 :

$("#id option").each(function(){
    $(this).attr('selected', true);
});

4
.attr ( 'selected', 'selected') 아닌가?
v010dya 2016

16

이것은 옵션 값을 #myselectbox깔끔하고 깔끔한 배열로 만듭니다.

// First, get the elements into a list
var domelts = $('#myselectbox option');

// Next, translate that into an array of just the values
var values = $.map(domelts, function(elt, i) { return $(elt).val();});

이것을 단축 할 수 있습니다 :$.map(domelts, elt=> $(elt).val())
Jonno_FTW

11

확인란의 이름으로 "선택한 값"을 모두 가져 와서 ","로 구분 된 따로 표시 할 수 있습니다.

이를 수행하는 좋은 방법은 jQuery의 $ .map ()을 사용하는 것입니다.

var selected_val = $.map($("input[name='d_name']:checked"), function(a)
    {
        return a.value;
    }).join(',');

alert(selected_val);

6
이 코드는 읽을 수 없습니다. 좀 멋져도 절대 사용하지 않을 것입니다.
Upvote를 클릭하십시오

7
또한 문제는 약 selectoption하지 확인란.
Dementic


3

이를 위해 다음 코드를 사용할 수 있습니다.

var assignedRoleId = new Array();
$('#RolesListAssigned option').each(function(){
    assignedRoleId.push(this.value);
});

2

다중 선택 옵션의 경우 :

$('#test').val()선택된 값의 목록을 반환합니다. $('#test option').length총 옵션 수를 반환합니다 (모두 선택 및 선택되지 않음).


1

이것은 jQuery를 사용한 간단한 스크립트입니다.

var items = $("#IDSELECT > option").map(function() {
    var opt = {};
    opt[$(this).val()] = $(this).text();
    return opt;
}).get();
var selectvalues = [];

for(var i = 0; i < items.length; i++) {
    for(key in items[i]) {


        var id = key;
        var text = items[i][key];

        item = {}
        item ["id"] = id;
        item ["text"] = text;

        selectvalues.push(item);

    }
}
console.log(selectvalues);
copy(selectvalues);
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

1

다음은 선택된 항목의 모든 값, 텍스트 또는 값 또는 선택한 항목의 텍스트를 가져 오는 jquery의 간단한 예입니다.

$('#nCS1 > option').each((index, obj) => {
   console.log($(obj).val());
})

printOptionValues = () => {

  $('#nCS1 > option').each((index, obj) => {
    console.log($(obj).val());
  })

}

printOptionTexts = () => {
  $('#nCS1 > option').each((index, obj) => {
    console.log($(obj).text());
  })
}

printSelectedItemText = () => {
  console.log($('#nCS1 option:selected').text());
}

printSelectedItemValue = () => {
  console.log($('#nCS1 option:selected').val());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select size="1" id="nCS1" name="nCS1" class="form-control" >
					<option value="22">Australia</option>
          <option value="23">Brunei</option>
          <option value="33">Cambodia</option>
          <option value="32">Canada</option>
          <option value="27">Dubai</option>
          <option value="28">Indonesia</option>
          <option value="25">Malaysia</option>				
</select>
<br/>
<input type='button' onclick='printOptionValues()' value='print option values' />
<br/>
<input type='button' onclick='printOptionTexts()' value='print option texts' />
<br/>
<input type='button' onclick='printSelectedItemText()' value='print selected option text'/>
<br/>
<input type='button' onclick='printSelectedItemValue()' value='print selected option value' />


0
$("input[type=checkbox][checked]").serializeArray();

또는:

$(".some_class[type=checkbox][checked]").serializeArray();

결과를 보려면

alert($("input[type=checkbox][checked]").serializeArray().toSource());

0

선택한 텍스트가있는 모든 옵션을 찾고 있다면 아래 코드가 작동합니다.

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

0

짧은 길

$(() => {
$('#myselect option').each((index, data) => {
    console.log(data.attributes.value.value)
})})

또는

export function GetSelectValues(id) {
const mData = document.getElementById(id);
let arry = [];
for (let index = 0; index < mData.children.length; index++) {
    arry.push(mData.children[index].value);
}
return arry;}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.