事件不适用于html5对象标记

时间:2014-12-05 11:36:11

标签: javascript jquery html html5 javascript-events

似乎触发/在jquery事件上标准和自定义都不适用于对象标记。

无效

var $test = $("<object>"); 
$test.on("test", function (){
  console.log("jquery test handler");
});
$test.trigger("test");

虽然它适用于其他html标签(试过div,视频等)。

Vanilla js解决方案有效:

var test = document.createElement("object");
test.addEventListener("testV", function(e) {
  console.log("vanilla test handler");
 });
var event = new CustomEvent("testV");
test.dispatchEvent(event);

jQuery ver。 1.11.1
测试:http://codepen.io/anon/pen/dPGoJg


问题

  1. 我只是一个有这个错误的人,或者我做错了什么?
  2. 这是一个jQuery错误还是预期的行为?
  3. 任何变通方法(特别是除了使用其他元素之外的自定义事件)?

2 个答案:

答案 0 :(得分:1)

您的第一个示例不起作用,因为该元素尚未添加到DOM中。

var $test = $("body").append("<object>"); 
$test.on("test", function (){
  console.log("jquery test handler");
});
$test.trigger("test");

您可以使用其他JQuery函数添加元素。

答案 1 :(得分:0)

更新:
第一篇文章是完全错误的,但这似乎适用于点击对象标签

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

<script>
$(document).on('click', 'object', function(event) {
    console.log("jquery test handler");});
</script>
<object width="400" height="400">Object</object>

重要的部分是$(document)
更新2:使用触发器和自定义事件

更相关的问题代码
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

<object>Object</object>
<script>
$(document).on('test', 'object', function(event) {
    console.log("jquery test handler");});
$('object').trigger('test');
</script>