2014-12-05 29 views
6

看來,標準和自定義的jquery事件上的觸發器/對於對象標記都不起作用。事件不能在html5對象標記上工作

但這不行

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

雖然它與其它的HTML標籤(試過DIV,視頻等)的作品。

香草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的版本。 1.11.1
測試:http://codepen.io/anon/pen/dPGoJg


問題

  1. 我是唯一一個誰擁有這個錯誤還是我做錯了什麼?
  2. 這是一個jQuery錯誤還是它的預期行爲?
  3. 任何解決方法(特別是除了使用另一個元素的自定義事件)?

回答

1

您的第一個示例不起作用,因爲該元素尚未添加到DOM。

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

您可以使用替代JQuery函數添加元素。

+1

這實際上起作用,可能被認爲是解決方法。解決方法是因爲我的第一個示例與其他html標記一起使用,但不是對象。 此外,此作品: 'var $ test = $(「」); $ test = $(「body」)。append($ test); ...' 並且這不:: 'var $ test = $(「」); $(「body」)。append($ test); ...' 這很奇怪 – 2014-12-10 15:20:37

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> 
相關問題