Lier aux événements dans l'iframe créé dynamiquement

Je dois me lier à un événement (par exemple, click sur un <input> arbitraire) dans un iframe créé dynamiquement après que l'utilisateur effectue une certaine action. Le code qui ajoute l'iframe ET le code à l'intérieur de l'iframe n'est pas le mien et je ne peux pas le modifier d'aucune façon (c'est un panneau d'administration CMS).

Comment puis-je écouter les événements en utilisant jQuery 1.6 (encore une fois, ce n'est pas mon choix, je suis coincé avec ça). Je pensais que delegate() pourrait être ce que je veux:

 $('body').delegate('iframe input', 'click', function(e) { alert('bingo?'); }); 

Mais ce qui précède n'indique pas quand une entrée est cliquée. Ce qui suit, cependant, fonctionne comme prévu:

 $('body').delegate('input', 'click', function(e) { alert('bingo?'); }); 

Mais c'est en dehors de l'iframe.

La src d' iframe pointe vers le même domaine, évidemment.

Toute aide ou tout simplement un produit dans la bonne direction est grandement apprécié.

Cette 'iframe input' ne sélectionne pas input éléments d' input à l'intérieur de l' iframe .

Vous pouvez lier l'événement comme

 $('body iframe').contents().find('input').bind('click',function(e) { alert('bingo?'); }); 

Je pense que vous pouvez également utiliser quelque chose comme

 $('body iframe').contents().find('body').delegate('input','click',function(e) { alert('bingo?'); }); 

Pour détecter si l'iframe a été entièrement chargé, utilisez la méthode décrite dans cette réponse https://stackoverflow.com/a/5788723/344304

Ajouter dans le document principal / parent:

 function iframeLoaded() { $('body iframe').contents().find('input').bind('click',function(e) { alert('bingo?'); }); } 

Ajouter dans le document Iframe:

 window.onload = function() { parent.iframeLoaded(); } 

Ou utiliser

 $('body iframe').load(function(){ $('body iframe').contents().find('input').bind('click',function(e) { alert('bingo?'); }); });