2011-02-09 5 views
9

javascript에서 jQuery를 사용했을 가능성이 있습니다. 특정 요소의 html 콘텐츠가 변경된 경우 어떻게 검색 할 수 있습니까? 나는 기본적으로 주어진 요소는 레이블로 주어진 요소의 내부 HTML (사업부 또는 경우에 추가되는 경우 탐지하려고jQuery : html이 주어진 요소 내에서 변경되었는지 어떻게 알 수 있습니까?

$('#myDiv').change(function(){ 
    // do some stuff 
}); 

:

내가 좋아하는 뭔가를해야만 할 수 있도록하고 싶습니다)가 변경된 다음 내용에 따라 div를 숨기거나 표시합니다.

이와 같은 smt를 달성하는 방법에 대한 다른 아이디어는에도 반영됩니다.

나는 이것을하기 위해 일부 모호한 플러그인으로 되돌릴 필요가 없길 희망한다!

참고 : IE8 이상에서 작동해야합니다.

+0

+1 멋진 눈 패치 –

답변

20

DOM 레벨 3 이벤트 DOMNodeInserted을 사용할 수 있습니다. 예 :

$('#myDiv').bind('DOMNodeInserted', function(e) { 
    console.log('element: ', e.target, ' was inserted); 
}); 

데모 : 새 노드가 당신이 핸들러를 결합되는 요소에 추가 될 때마다 http://www.jsfiddle.net/vsgdZ/1/

이벤트가 발생합니다.

+0

또는 DOMSubtreeModified 이벤트는 어떨까요? (Chrome, Firefox 및 Safari에서만 지원) – Jan

+0

@Jan : OP 요구 사항을 올바르게 (새 노드를 감지하여) 이해하면이 이벤트가 정상적으로 처리됩니다. – jAndy

+0

자녀 중 하나의 className이 변경되면이 이벤트가 실행됩니까? 그것은 또한 '내용의 변화'입니다. 나는 당신의 해결책이 잘못되었다는 말은 아니며 단지 새로운 아이의 삽입을 탐지하는 것 이상을 필요로 할 때 도움이 될 수있는 또 다른 이벤트를 제안합니다. – Jan

관련 문제