더북(TheBook)

덧붙여서, 사용자 정의 이벤트를 전달해야 하는 경우도 있을 것이다. SliderButtons 컴포넌트에 적용했던 첫 번째 방법의 경우에는 플러그인에 이미 존재하는 이벤트를 사용했으므로 사용자 정의 이벤트를 쓸 필요가 없었다. 다음에 살펴볼 구현 방법은 이벤트를 생성하여 데이터와 함께 window로 전달한다. jQuery 슬라이더 객체를 생성하는 코드와 함께 사용자 정의 slide 이벤트를 전달하는 코드를 구현할 수 있다. index.html의 script 태그에서 다음과 같은 내용을 확인할 수 있다(ch06/slider/index.html).

 

예제 코드 6.16 jQuery UI 플러그인에 이벤트 리스너 설정하기

let handleChange = (e, ui)=>{ ---- jQuery 슬라이더에 적용하여 사용자 정의 이벤트를 전달할 이벤트 핸들러를 생성한다.
    var slideEvent = new CustomEvent('slide', { ---- 사용자 정의 이벤트를 생성한다.
        detail: {ui: ui, jQueryEvent: e} ---- 현재 슬라이더 값을 가진 jQuery 데이터를 전달한다.
    })
    window.dispatchEvent(slideEvent) ---- 이벤트를 window로 전달한다.
}
$( '#slider' ).slider({ ---- ID가 slider인 컨테이너 요소에 슬라이더를 생성한다.
    'change': handleChange, ---- change와 slide에 각각 이벤트 리스너를 등록하여 프로그래밍적 변경과 UI 변경을 감지한다.
    'slide': handleChange
})

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.