【发布时间】:2012-05-25 07:34:06
【问题描述】:
我无法成功地将 jQuery 事件侦听器附加到 <object> 类型的元素上,并让它接收在该事件上触发的任何事件。
因此:
<object></object>
使用 JavaScript:
$('object').on('foo', function(evt, data){ alert(data) });
$('object').trigger('foo', 'object-on-object');
如果我在$('body') 上有完全相同的代码,那么它可以正常工作。另外,如果我在 <body> 和 $('object').trigger() 上监听事件,那么我确实会收到事件。
我有一个 jsFiddle 来证明这一点。在其中您会看到bar 事件没有导致输出,但两个foo 事件有。
【问题讨论】:
-
大声笑,这里有一个魔法:与
.live一起使用已被弃用:jsfiddle.net/vNqZD/1 但是别担心,我正在研究这个,很快就会给你一个更新:P I我在 osx safari 上,可以看到你的问题 - 有趣 - 我敢打赌这将是一个微小的 lil 解决方案。 -
@Tats_innit:嗯,这很有趣。我没想过要尝试弃用的功能。我也会看看 jQuery 源代码。
-
@MatthewSchinckel 哈哈,我现在正在阅读它 B-) 应该有一些非常小的原因。
-
$.live和$.on的等效语法也可以。 FIDDLE -
Bruv - 我转了一圈,唯一可行的方法是使用已弃用的
.live,请参见此处:groups.google.com/group/jquery-dev/browse_thread/thread/… 将为您提供有关当前问题的进一步阅读。