2013-10-09 2 views
-1

나는 문서의 모든 이벤트를 수신 할 수 있지만 다음 코드는 작동하지 않지만. 내가 여기서 뭐 잘못하고 있니? 객체에서이벤트 위임 - jQuery

$(document).on('test', function() { 
    console.log('document is listening for test event'); 
}); 

하고 화재 테스트 이벤트 :

var obj = {}; 
    $(obj).trigger('test'); //nothing happens, why? 

위의 코드 화재의 기능이 document에 이벤트를 테스트하기 위해 관련되지할까요?

+9

'obj'는 (는) 문서의 일부가 아닙니다. – maketest

+1

브라우저의 모든 내용은 창 자식이지만 문서가 아닙니다. –

+0

@ user2855314 DOM은 ECMAScript의 일부가 아닙니다. 그리고'document'는 Object입니다. 그래서'Object'는'document'의 자식이 될 수 있습니까? – iConnor

답변

4

먼저 이벤트 위임이 아니라 그냥 정규 이벤트는 document에 바인딩됩니다. 문서와 같은 무언가의 이벤트 핸들러가 실행되도록하려면 해당 요소에서 직접 트리거하거나 DOM을 전파 ("거품")하는 이벤트를 트리거하여 해당 요소에서 이벤트를 트리거해야합니다 그 요소에.

obj 개체가 document의 일부가 아니기 때문에 예제가 작동하지 않으므로 test 이벤트가 문서에서 실행되지 않습니다.

1

이 이벤트 발생됩니다 등등 바인딩 된 이벤트가 발생하지 않습니다

$('body').trigger('test'); 

귀하의 빈 객체 objdocument하지 않거나 document의 자식 :

$(document).trigger('test'); 

또는 document의 아이를 document