2012-05-25 2 views
1

<object> 유형의 요소에 jQuery 이벤트 수신기를 연결하고 해당 이벤트에서 트리거 된 모든 이벤트를 가져 오지 못했습니다. 따라서개체 요소에 대한 jQuery 이벤트가 작동합니까?

: 자바 스크립트와

<object></object> 

: 나는이 $('body')에 동일한 코드가있는 경우

$('object').on('foo', function(evt, data){ alert(data) }); 
$('object').trigger('foo', 'object-on-object'); 

, 그것은 잘 작동합니다. 또한 <body>$('object').trigger()에서 이벤트를 수신하는 경우 이벤트를 수신합니다.

여기에는 이것을 입증하는 jsFiddle이 있습니다. 그 안에는 bar 이벤트가 발생하지 않았지만 두 개의 foo 이벤트가 있음을 알 수 있습니다.

+0

어떤 브라우저를 사용하고 있습니까? – jmort253

+1

여기 LOL과 마술은 사용되지 않는'.live'와 함께 작동합니다 : http://jsfiddle.net/vNqZD/1/ **하지만 ** 걱정하지 않으려 고합니다. osx 사파리에 있고 당신의 문제점 남자 - 재미있는 볼 수 있습니다 - 나는 그것이 작은 릴 솔루션이 될 것입니다 내기. –

+0

jmort253 : Safari 5.1 –

답변

0

그래서 대답은 '아니오'인 것처럼 보입니다. this thread에 따르면 바인딩 이벤트와 관련된 문제가 있거나 jQuery 및 <object> 요소로 흥미로운 작업을 수행하는 경우가 있습니다.

해결책은 다른 곳에서 이벤트를 버블 링하는 것입니다. $(document)은 올바른 선택이 될 것 같다, 그래서 당신은 같은 일을 수행 할 수 있습니다

$(document).on('foo', 'object', {data: data}, handler); 

$('object').trigger('foo'); 

이 (내가 플러그인 요소에 이벤트를 수신하기 위해 소비자를 말할 수 있기를 원 내가 원하는 것을 위해 잘못된 방법의 종류), 그러나 그것은 충분히 잘 작동합니다. 코드에서 수정할 수없는 부분은 문서에서 수정하십시오.

관련 문제