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.