对象元素上的jQuery事件是否有效?

时间:2012-05-25 07:34:06

标签: jquery events object

我无法将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事件都有。

1 个答案:

答案 0 :(得分:0)

所以,似乎答案是肯定的。根据{{​​3}},存在与绑定事件相关的问题,或者可能对jQuery和<object>元素做任何有趣的事情。

似乎解决方案是让事件在其他地方冒泡。 $(document)似乎是一个有效的选择,因此您可以执行以下操作:

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

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

对于我想要的东西,这是一种错误的方式(我希望能够告诉消费者在插件元素上监听事件),但它运作良好。您无法修复代码,修复文档。