16

我需要绑定到用户执行特定操作后动态创建的 iframe 内的事件(比如 a clickon an absolute )。<input>附加 iframe 的代码和 iframe 内的代码不是我的,我无法以任何方式更改它(这是一个 CMS 管理面板)。

我怎样才能使用jQuery 1.6来监听事件(再次强调,这不是我的选择,我坚持使用它)。我想delegate()可能是我想要的:

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

但是当单击输入时,上述内容不会发出警报。但是,以下内容按预期工作:

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

但这在 iframe 之外。

srcofiframe显然指向同一个域。

非常感谢任何帮助或只是在正确方向上的刺激。

4

1 回答 1

17

'iframe input'不会input选择iframe.

您可以像这样绑定事件

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

我想你也可以使用类似的东西

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

要检测 iframe 是否已完全加载,请使用此答案中描述的方法 https://stackoverflow.com/a/5788723/344304

在主/父文档中添加:

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

在 iframe 文档中添加:

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

或使用

$('body iframe').load(function(){
     $('body iframe').contents().find('input').bind('click',function(e) {
            alert('bingo?');
         });
});
于 2012-06-18T17:38:35.693 回答