- 출처 : http://stackoverflow.com/questions/2857900/onhide-type-event-in-jquery -
* 상황 설명
마치 onclick 이벤트처럼, '어떤 동작'을 수행할 때(특정 함수를 호출할 때) 특정 동작을 수행하게 하고 싶다.
그러나 그 동작이 jQuery에 built-in 된 이벤트가 아니기 때문에 bind() 를 사용할 수가 없다. 어떻게 해야 하는가?
* 방법 1
- 실제로 'hide' 이벤트는 존재하지 않지만, 마치 이벤트가 있는 것 같은 효과를 주기 위해서
jQuery의 hide() 함수를 오버라이딩 한다.
- hide() 함수 오버라이딩 코드
- 'hide' 이벤트 바인딩 코드
$('#saveBtn').bind('hide', function(){
# 방법 1을 확장하여 적용해 본 예제
- object에 property 셋팅시 이벤트를 주어 셋팅한 property의 변경전/후의 이름/값을 받아 사용하고 싶다.
//arguments[0] 의 정체는 잘 모르겠는데, 이벤트 당사자가 아닌가 싶다.
//setVal 실행 전 프로퍼티정보
alert('after - '+arguments[1]['after'][0] +' : '+arguments[1]['after'][1] );
- 참고링크 (tent 라이브러리 주목!)
http://stackoverflow.com/questions/4169524/javascript-property-change-event
* 방법 2
- input:text 계열 엘리먼트의 값이 변경될 때의 이벤트를 캐치하고 싶은데, 이벤트가 없다.
jQuery의 val() 함수를 오버라이딩하여 값이 변경되었을 때 특정 코드를 수행하게 하자.
- 위의 예시 1과 다른 점은, 예시 1은 새로운 이벤트를 만드는 것에 가까운 반면에,
예시 2는 함수의 호출과 특정 이벤트를 맵핑시키는 개념이라는 점이 다르다.
- val() 함수 오버라이딩 코드 (getter는 놔두고 setter만 오버라이딩 하는 것이 포인트!)
- 이벤트 바인딩 코드 (:text, :hidden 등에는 원래 사용할 수 없는 onchage 이벤트 사용)
$('#inputBox1').change( function(){