2010-07-06 4 views
14

동적 탭을 사용하는 UI가있어서 컨텐츠를 탭에로드 한 다음 탭을 닫고 페이지에서 컨텐츠를 제거 할 수 있습니다.요소를 제거 할 때 jQuery에서 이벤트를 분리해야합니까?

콘텐츠를 탭에로드 할 때 jQuery를 사용하여 많은 이벤트를 요소에 첨부합니다.

페이지에서 이러한 요소를 제거하면 어떻게됩니까? jQuery는 알아야합니까?

또한 이벤트를 여러 번 첨부해도 문제가되지 않습니까? 예를 들어 내 탭로드에서는 $('.submitButton').click(...)과 같은 클래스 선택기를 사용하여 이벤트를 첨부 할 수 있습니다. 그러나 이미 submitButton 이벤트가 첨부 된 다른 탭이 열려있을 수 있습니다. 이 경우 동일한 이벤트를 다시 첨부 할 것입니다. 이 문제가 있습니까?

+0

같은 이벤트를 요소에 두 번 이상 연결하는 이유에 대해 궁금 할 것입니다. 바인딩/바인딩 해제를 많이 수행하는 경우 더 나은 방법이있을 수 있습니다. – user113716

답변

16

당신이 만약 (나중에 해당 요소를 다시 삽입 할 경우에 유용합니다) 모든 관련 데이터와 메모리에서 이벤트를 유지합니다 .detach() 이외의

, jQuery 메서드 .remove() 또는 .empty()을 사용하면 jQuery로 할당 된 모든 이벤트 (및 기타 데이터)를 정리합니다. 제거를위한 워드 프로세서()에서

  • http://api.jquery.com/empty/
    • http://api.jquery.com/remove/ : 요소와 관련된 요소를 스스로 모든 바인딩 이벤트 및 jQuery를 데이터에 추가

      제거됩니다.

      메모리 누수를 방지하기 위해, JQuery와 요소 자체를 제거하기 전에 이러한 자식 요소 데이터와 이벤트 핸들러와 같은 다른 구조를 제거 :

      등) (비어 용

      .

      네이티브 API 제거 방법을 사용한 경우 모든 데이터가 중단됩니다. 따라서 jQuery 메서드를 사용하는 것이 좋습니다.

    3

    .remove()으로 요소를 제거하면 모든 바운드 이벤트와 요소와 관련된 jQuery 데이터가 제거됩니다. 는 DOM에서 요소를 제거 할 수 있지만