jQuery로 <select>의 첫 번째 옵션을 선택하는 방법


546

jQuery로 선택된 첫 번째 옵션을 어떻게 만듭니 까?

<select id="target">
  <option value="1">...</option>
  <option value="2">...</option>
</select>

답변:


955
$("#target").val($("#target option:first").val());

363
이것은 $ ( "# target") [0] .selectedIndex = 0;
David Andres

17
작동하지만 첫 번째 요소 값을 기반으로합니다. 첫 번째 요소에 빈 값이 포함되어 있으면 가장 가까운 요소를 가진 값을 선택합니다
evilReiko

2
IE6을 제외하고는 잘 작동하는 것 같습니다. 7-8 확실하지 않은, 9에 작동합니다.
Nicholi

3
나는 나의 이전 진술을 회상하고, 나보다 앞서 가고 있었다. $ ( "# target"). val ( "option : first"); IE6 $ ( "target"). val ($ ( "# target option : first"). val ()); 대부분의 곳에서 작동합니다. 말 그대로 첫 번째 값을 찾고 대상 값으로 입력하기 때문에 IE6에서 작동합니다. 하나 대신 두 개의 ID 조회.
Nicholi

2
그리고 실제로는 IE6, 7 및 8에 필요합니다. 반면에 .val ( 'option : first')은 IE9 (및 Safari 및 Firefox 및 Chrome 및 Opera)에서 작동합니다.
Nicholi

178

당신은 이것을 시도 할 수 있습니다

$("#target").prop("selectedIndex", 0);

2
모든 경우에 제대로 작동하지는 않습니다. 부모 / 자식 계단식 드롭 다운이 있습니다. 부모 # 1을 선택하고 자식 # 1을 표시하고 부모 # 2를 표시하십시오. 하위 # 2를 선택하십시오. 새 부모를 선택할 때마다 해당하는 자식을 첫 번째 옵션으로 다시 설정해야합니다. 이 솔루션은이 작업을 수행하지 않습니다. 자식 메뉴는 "끈적 거리는"상태로 유지됩니다. 더 많은 시나리오에서 작동하는 답변에 대해서는이 질문에 대한 옵션 : selected.prop ( 'selected', false) / option : first.prop ( 'selected', 'selected') 솔루션을 참조하십시오.
랜스 클리블랜드

이것은 onChange 이벤트를 트리거하지 않습니다. 적어도 크롬에서.
Tomasz Mularczyk

감사합니다! 이것은 나를 위해 일한 답변 목록의 첫 번째 답변입니다.
Casey Crookston

6
@Tomasz$("#target").prop("selectedIndex", 0).change();
mplungjan

@Romesh selectedIndex 기준 값을 어떻게 설정할 수 있습니까?
Junior Frogie

111
// remove "selected" from any options that might already be selected
$('#target option[selected="selected"]').each(
    function() {
        $(this).removeAttr('selected');
    }
);


// mark the first option as selected
$("#target option:first").attr('selected','selected');

1
좋은 두 번째 방법. 선택한 속성의 값을 추가하십시오. 예를 들어, attr ( "selected", "selected")입니다. 이 추가 매개 변수가 없으면 선택이 이루어지지 않습니다.
David Andres

@EgorPavlikhin-방금 선택한 옵션에서 "selected"플래그를 제거하기 위해 JQuery 코드를 포함하도록 답변을 편집했습니다. 이제 정답은 :)
jmort253

20
필요가 없습니다 each함수가 있어야한다 : $('#target option[selected="selected"]').removeAttr('selected')또한 지금 사용되어야 removeProp하고 prop대신.
vsync

이 질문의 다른 부분에 대한 제임스 리 베이커의 대답의 더 철저한 버전이지만 인터페이스가 잘 관리되면 필요하지 않을 수있는 계산주기가 추가됩니다.
랜스 클리블랜드

65

사용할 때

$("#target").val($("#target option:first").val());

첫 번째 옵션 값이 null 인 경우 Chrome 및 Safari에서 작동하지 않습니다.

나는 선호한다

$("#target option:first").attr('selected','selected');

모든 브라우저에서 작동 할 수 있기 때문입니다.


3
더 많은 경우에이 기능을 사용하려면 이전에 선택한 요소를 "선택 취소"해야합니다. 자세한 내용은 James Lee Baker의 답변을 참조하십시오.
랜스 클리블랜드

44

선택 입력의 값을 변경하거나 선택한 속성을 조정하면 DOM 요소의 기본 selectedOptions 특성을 겹쳐 쓸 수 있으며, 이로 인해 reset 이벤트가 호출 된 양식에서 요소가 올바르게 재설정되지 않을 수 있습니다.

jQuery의 prop 메소드를 사용하여 필요한 옵션을 지우고 설정하십시오.

$("#target option:selected").prop("selected", false);
$("#target option:first").prop("selected", "selected");

3
완전한. 계단식 드롭 다운 메뉴가 있습니다. 사용자가 부모 옵션 2를 선택한 다음 자식 옵션 3을 선택하면 "고정"되지 않습니다. 다시 말해, 사용자는 부모 # 1을 선택한 다음 부모 # 2를 다시 선택합니다. 그런 일이 발생하면 자식 메뉴가 첫 번째 옵션 (제 경우 "Any")으로 재설정되기를 원합니다. 여기의 다른 모든 솔루션은 Firefox v19 및 Linux의 Chrome에서 실패합니다.
랜스 클리블랜드

33
$("#target")[0].selectedIndex = 0;

1
드롭 다운에 미리 선택된 항목이있는 경우에는 작동하지 않습니다. 자세한 내용은 선택한 답변에 대한 내 의견을 참조하십시오.
랜스 클리블랜드

21

내가 생각하는 하나의 미묘한 점 상단이 답변을 투표에 대해 내가 발견 한이 올바르게 선택된 값을 변경하더라도, 그들은 사용자들이 위젯을 클릭하는 경우에만 그들이 옆에 체크 표시됩니다 (보고하는 요소를 업데이트하지 않는 것이있는 업데이트 된 요소).

.change () 호출을 끝에 연결하면 UI 위젯도 업데이트됩니다.

$("#target").val($("#target option:first").val()).change();

(Chrome 데스크톱에서 jQuery Mobile과 상자를 사용하는 동안이를 알았으므로 모든 경우에 해당되지 않을 수 있습니다).


.change () 호출을 끝에 연결하면 UI 위젯도 업데이트됩니다.
codemirror

17

옵션을 비활성화 한 경우 not ([disabled]) 을 추가하여 옵션 을 선택하지 못하게하여 다음과 같은 결과를 초래할 수 있습니다.

$("#target option:not([disabled]):first").attr('selected','selected')

1
비활성화 된 옵션에 대한 좋은 지적. 제시된 답변에 멋진 추가!
랜스 클리블랜드

16

선택한 여러 요소에 대해 값을 재설정하는 다른 방법은 다음과 같습니다.

$("selector").each(function(){

    /*Perform any check and validation if needed for each item */

    /*Use "this" to handle the element in javascript or "$(this)" to handle the element with jquery */

    this.selectedIndex=0;

});

4
+1 실제로 좋은 대답이지만 질문 영역에보다 구체적으로 만들 수 있습니다. 대신에 $("selector")당신은 방금 쓸 수있었습니다$('#target')
Ja͢ck


7
$('#newType option:first').prop('selected', true);

이미 선택된 옵션이없는 경우에만 작동합니다. James Lee Baker의 답변을 참조하십시오.
Webars

6

선택한 속성이 이미 있으면 attr selected 설정 만 작동하지 않는 것으로 나타났습니다. 지금 사용하는 코드는 먼저 선택한 속성을 설정 해제 한 다음 첫 번째 옵션을 선택합니다.

$('#target').removeAttr('selected').find('option:first').attr('selected', 'selected');

이것은 잘 작동하며 James Lee Baker 가이 질문에 대해 다른 곳에서 언급 한 답변과 매우 유사합니다. option : selected 및 option : first 옵션이있는 다른 대답이 좋습니다 : option : first의 실행이 find ()보다 빠를 것입니다 (계산적입니다).
랜스 클리블랜드

5

각 기능이 필요하지는 않지만 ...

$('select').each(function(){
    $(this).find('option:first').prop('selected', 'selected');
});

나를 위해 작동합니다.


5

내가하는 방법은 다음과 같습니다.

$("#target option")
    .removeAttr('selected')
    .find(':first')     // You can also use .find('[value=MyVal]')
        .attr('selected','selected');

1
이것은 잘 작동하며 James Lee Baker 가이 질문에 대해 다른 곳에서 언급 한 답변과 매우 유사합니다. option : selected 및 option : first 옵션이있는 다른 대답이 좋습니다 : option : first의 실행이 find ()보다 빠를 것입니다 (계산적입니다).
랜스 클리블랜드

2

마지막에 트리거 ( 'change')를 사용하여 나에게만 효과가있었습니다.

$("#target option:first").attr('selected','selected').trigger('change');

2

첫 번째 옵션을 기본값으로 사용하려는 경우

<select>
    <option value="">Please select an option below</option>
    ...

다음을 사용할 수 있습니다.

$('select').val('');

멋지고 간단합니다.



1

James Lee Baker의 답변 뒤에 : first : selected ...에 대한 브라우저 지원에 대한 의존성을 제거 하므로이 솔루션을 선호합니다.

$('#target').children().prop('selected', false);
$($('#target').children()[0]).prop('selected', 'selected');

1

나를 위해 다음 코드를 추가했을 때만 작동했습니다.

.change();

나를 위해 다음 코드를 추가했을 때만 작동했습니다. 양식을 "재설정"하고 싶었습니다. 즉, 모든 양식 선택의 첫 번째 옵션을 모두 선택하려면 다음 코드를 사용했습니다.

$('form').find('select').each(function(){ $(this).val($("select option:first").val()); $(this).change(); });


1

사용하다:

$("#selectbox option:first").val()

이 JSFiddle 에서 간단한 작업을 찾으십시오 .


위치 15, 25 또는 특정 텍스트는 어떻습니까? : D
Marcelo Agimóvel

호출 .val()하면 목록의 첫 번째 옵션 값만 가져옵니다. 원래 질문에서 요청한 것처럼 실제로 첫 번째 옵션을 선택 (선택)하지 않습니다.
Funka

1

나를 위해 다음 코드 줄을 추가했을 때만 작동했습니다.

$('#target').val($('#target').find("option:first").val());


0

select 요소의 jQuery 객체를 저장하는 경우 :

var jQuerySelectObject = $("...");

...

jQuerySelectObject.val(jQuerySelectObject.children().eq(0).val());

0

ECMAScript 6 과 함께 jQuery를 사용 하여이 최선의 접근 방식을 확인하십시오 .

$('select').each((i, item) => {
  var $item = $(item);
  $item.val($item.find('option:first').val()); 
});

0

옵션을 dropdown사용하여 선택할 수 있습니다 .

// 'N' can by any number of option.  // e.g.,  N=1 for first option
$("#DropDownId").val($("#DropDownId option:eq(N-1)").val()); 

0

$('select#id').val($('#id option')[index].value)

바꾸기 ID 특정 select 태그의 ID와와 인덱스 선택하려는 특정 요소를.

<select class="input-field" multiple="multiple" id="ddlState" name="ddlState">
                                        <option value="AB">AB</option>
                                        <option value="AK">AK</option>
                                        <option value="AL">AL</option>
</select>

첫 번째 요소 선택을 위해 다음 코드를 사용합니다.

$('select#ddlState').val($('#ddlState option')[0].value)

-1

사용하다:

alert($( "#target option:first" ).text());
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.