2014-12-05 12 views
6

Wygląda na to, że wyzwalacze/zdarzenia jquery zarówno standardowe, jak i niestandardowe nie działają na znaczniku object.Zdarzenia nie działają na znaczniku obiektu html5

To nie nie działać:

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

Choć współpracuje z innymi znacznikami html (próbował div, wideo, etc.).

rozwiązanie Vanilla js działa:

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
Testy: http://codepen.io/anon/pen/dPGoJg


Pytania:

  1. jestem jedyną osobą, która ma ten błąd, albo robię coś źle?
  2. Czy jest to błąd jQuery, czy jest to oczekiwane zachowanie?
  3. Jakiekolwiek obejścia (szczególnie w przypadku zdarzeń niestandardowych poza użyciem innego elementu)?

Odpowiedz

1

Twój pierwszy przykład nie działa, ponieważ element nie został jeszcze dodany do DOM.

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

Można użyć alternatywnych funkcji JQuery do dodania elementu.

+1

To faktycznie działa i może być uznane za obejście tego problemu. Obejście problemu, ponieważ mój pierwszy przykład działa z innymi znacznikami html, ale nie z obiektem. Dodatkowo działa to: 'var $ test = $ (" "); $ test = $ ("body"). Append ($ test); ... ' i to nie: ' var $ test = $ (""); $ ("body"). Append ($ test); ... ' Co jest dość dziwne –

0

Aktualizacja:
Pierwszy post był całkowicie błędne to jednak wydaje się działać dla kliknięciu znacznika object

<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> 

Ważną częścią jest $(document)
Aktualizacja 2: Bardziej odpowiedni kod do kwestii korzystania spust i zdarzenie niestandardowe

<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> 
Powiązane problemy