我无法将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
事件都有。
答案 0 :(得分:0)
所以,似乎答案是肯定的。根据{{3}},存在与绑定事件相关的问题,或者可能对jQuery和<object>
元素做任何有趣的事情。
似乎解决方案是让事件在其他地方冒泡。 $(document)
似乎是一个有效的选择,因此您可以执行以下操作:
$(document).on('foo', 'object', {data: data}, handler);
$('object').trigger('foo');
对于我想要的东西,这是一种错误的方式(我希望能够告诉消费者在插件元素上监听事件),但它运作良好。您无法修复代码,修复文档。