我需要绑定到用户执行特定操作后动态创建的iframe内的事件(比如click
上的任意<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中。
src
的{{1}}显然指向同一个域。
非常感谢任何帮助或只是正确方向的刺激。
答案 0 :(得分: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?');
});
});