2013-09-03 2 views
0

I 페이지에서 다음 HTML이 :Javascript : 관련 HTML을 제거 할 때 이벤트 처리기를 제거해야합니까?

<div class="component"> 
    <a href="#" class="delete">delete</a> 
</div> 

을 그리고 페이지로드에서 다음 스크립트를 가지고 :

을 :

$(document).ready(function(){ 

    $('a.delete').on('click', function() { 
    .... 
    }); 

}); 

이 페이지는 페이지를 조작하고를 통해 제거 다른 자바 스크립트 코드가

$('.component').remove(); 

내 질문 : HTML을 제거하기 전에 이벤트 처리기를 제거 (바인딩 해제)해야합니까? 그렇지 않은 경우, 메모리 누출 또는 다른 영향이 있습니까?

감사합니다.

답변

2

jQuery를 사용하고 있으므로 걱정할 필요가 없습니다.

.empty()과 유사하게 .remove() 메서드는 DOM에서 요소를 가져옵니다. 요소 자체와 그 안의 모든 요소를 ​​제거하려면 .remove()을 사용하십시오. 요소 그 자체 외에도 은 요소와 연관된 모든 바운드 이벤트 및 jQuery 데이터가 제거됩니다. 데이터 및 이벤트를 제거하지 않고 요소를 제거하려면 대신 .detach()을 사용하십시오.

http://api.jquery.com/remove/

+0

매트를, (강조는 추가) 내가 무엇을 같은 페이지에 새로운 위치로 제거 된 구성 요소를 삽입하면? 삽입하기 전에 이벤트 처리기를 제거해야합니까? 클릭 핸들러가 계속 작동하게하려면 삽입 후 이벤트 핸들러를 다시 연결해야한다는 것을 알고 있습니다. – curious1

+1

주의 깊게 읽어보십시오. 제가 인용 한 마지막 문장은 그 문제를 해결합니다. –

관련 문제