[jQuery] .on 이벤트에 파라미터 전달하는 방법

이벤트 처리 시 사용하고자 하는 변수가 전역변수라면 상관이 없지만 지역변수인 경우 인자로 정의를 해주어야 합니다.

전역변수를 .on 이벤트 핸들러에서 사용 시

 

지역변수를 .on 이벤트 핸들러에서 사용 시

 

이벤트 타입 인자 뒤에 JSON 형태로 파라미터를 추가해주시면 위와 같이 지역변수값을 전달받을 수 있습니다.

[jQuery] 동적 추가 요소 이벤트 부여하기

자바스크립트를 이용해 동적으로 추가된 요소에 이벤트 핸들러를 만들어주면 동작하지 않는다. 그래서 live 메소드를 통해 이벤트 핸들러를 생성해서 사용해왔지만 이 방법은 괘나 오래전부터 많은 문제점으로 인해 지원을 하지 않게 되버린지 오래이다.

즉, 옛날 버전 jQeury하면 모를까 요즘 버전의 jQuery 라이브러리에서는 live 메소드는 사용이 불가하다. 하지만 아직도 제목과 같은 검색어로 찾아보면 live 메소드를 이용하는 방법을 소개하는 글이 대다수다.

그렇다면 live를 대체할만한 방법이 있을까? 당연히 있다. jQuery에서는 live 메소드를 제외시키면서 bind나 on 메소드를 사용하라고 권장하고 있다. 하지만 예전 live 메소드를 사용하듯 메소드 이름만 변경해서 사용하면 정상동작을 하지 않는다.

아래 코드를 보면 대충 알 수 있다.

우선 보면 알겠지만 코드는 더 짧고 간결해졌다. $(document).ready(); 메소드안에 포함되던 형식으로 인해 길었던 코드가 한줄로 줄게 된다. 그리고 많은 이벤트 리스너 메소드가 존재한다. delegate, on, bind, live.. 이 중에서 on의 사용을 권장하고 있다. 저 메소드들은 모두 on을 기반하고 있기 때문이다.