본문 바로가기
프로그래밍/jQuery

jQuery API 정복 - 변경 이벤트, change()

by zoo10 2011. 11. 24.

.change()

원문 링크 http://api.jquery.com/change/

함수들

.change( handler(eventObject) )Returns : jQuery

개요 : JavaScript 이벤트인 "change"를 이벤트 핸들러에 바인딩 하거나 요소에 이벤트를 발생시킵니다.

  • .change( handler(eventObject) )
  • handler(eventObject) 매번 이벤트를 발생시키는 함수가 실행됩니다.
  • .change( [eventData], handler(eventObject) )
  • eventData 이벤트 핸들러에 전달될 데이터 집합.
  • handler(eventObject) 매번 이벤트를 발생시키는 함수가 실행됩니다.
  • .change( )

이 함수는 .bind('change', handler)을 줄여 놓은 것입니다. 그리고 .trigger('change') 로 change 이벤트를 발생시키기도 합니다.

change 이벤트는 요소(element)의 값이 변경될 때 발생합니다. 원래, 이 이벤트는 <input>, <textarea>, <select> 와 같은 폼 요소 전용이었습니다. select, checkbox, radio 버튼들을 마우스로 선택하여 상태값을 바꾸는 즉시 이벤트가 발생하지만, 그 외의 다른 요소들은 값을 변경하고 포커스를 잃을 때 이벤트가 발생합니다.

HTML을 보면

<form>
  <input class="target" type="text" value="Field 1" />
  <select class="target">
    <option value="option1" selected="selected">Option 1</option>
    <option value="option2">Option 2</option>
  </select>
</form>
<div id="other">
  Trigger the handler
</div>

text input 과 the select box에 이벤트를 바인딩 하겠습니다.

$('.target').change(function() {
  alert('Handler for .change() called.');
});

select의 값을 변경시키면 알림창이 뜹니다. text input에는 값을 바꾼 후 다른 곳을 클릭하면 알림창이 뜹니다. 만일 포커스의 이동없이 .change() 이벤트를 발생시키려면 아래 구문을 추가하시면 됩니다.

$('#other').click(function() {
  $('.target').change();
});

div인 Trigger the handler 를 클릭하면 메시지가 나타나게 됩니다. 이때 메시지는 2번 나타나는데 change 클래스를 가진 폼 요소가 2개이기 때문입니다.

예 제  
select에서 선택한 값들을 div에 표시합니다. ctrl + click으로 다중 선택해보세요.

<!DOCTYPE html>
<html>
<head>
  <style>

  div { color:red; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <select name="sweets" multiple="multiple">
    <option>Chocolate</option>
    <option selected="selected">Candy</option>

    <option>Taffy</option>
    <option selected="selected">Caramel</option>
    <option>Fudge</option>
    <option>Cookie</option>

  </select>
  <div></div>
<script>
    $("select").change(function () {
          var str = "";
          $("select option:selected").each(function () {
                str += $(this).text() + " ";
              });
          $("div").text(str);
        })
        .change();
</script>

</body>
</html>

미리보기

 

그럼 즐프하세요.

※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.