$("#id").on('click', function(){ ... });      vs     $("#id").on('click', '.class', function()){ ... });

 

-----------------------------------------------------------------------------------------------------------
보통 jquery 로 이벤트를 걸 때 $(id).click(function() { }); 형태로 많이 사용한다.

위의 경우로 사용할 경우, element가 나중에 생긴 경우에는 위의 click 이벤트 적용이 되지 않는다.
(나중에 생긴 경우 ex) - append()로 추가된 엘리먼트...) 


그럴때 필요한 코드가 다음과 같다.

$(document).on('click', id, function)

다음과 같이 걸면 element가 나중에 동적으로 생성되었다 하더라도, 이벤트가 걸리게 된다.

 

주의할 점은 동적으로 생긴 엘리먼트를 click 뒤에 작성해야 한다. 

 

 

--------------------------------------------------------------------------------------------------------------------------------

 

 

그러나, 문제가 하나 있다. 위와 같이 걸 경우, 페이지를 새로고침 하거나 한번 실행이 될때마다 click 이벤트가 계속 등록이 되어서

나중에는 click 이벤트가 여러번 실행되는 현상이 발생한다.



그걸 방지하기 위해서는 

 

1. off를 이용

$("#id").off().on('click', id, function() {}

 

2. return false 를 사용

$("#id").off().on('click', id, function() {

   return false;

}

 

3. .stopPropagation()

현재 이벤트가 부모에게 전파되지 않도록 중지

 

4. .preventDefault()

현재 이벤트 기본 동작 중지

 

5. .stopImmediatepropagation()

현재 이벤트가 부모와 현재 레벨에 걸린 다른 이벤트도 동작하지 않도록 중지

동일한 하나의 버튼에 이벤트가 여러 개 걸려 있을 때, 이 메소드를 쓴 이벤트만 발생하고 나머지 이벤트는 발생하지 않는 것.

'라이브러리 > Jquery' 카테고리의 다른 글

Jquery is(':visible');  (0) 2021.05.16
jquery .trigger() 함수  (0) 2021.05.16
제이쿼리 선택자, 함수  (0) 2021.05.16

+ Recent posts