场景如下,我在 iframe 内发生了一些事件,到目前为止一切都运行良好。我刚刚遇到了一个问题,我想将事件从 iframe 分派(dispatch)到父级。
我使用它来触发 iframe 中的事件:
$('body', window.parent.document).trigger('eventName');
//and I've also tried
$(window.parent.document).find('body').trigger('eventName');
然后在父页面中我正在监听这样的事件:
$('body').bind('eventName', myFunction)
我知道脚本到达触发器,因为我在触发器之前和之后卡住了 console.log
。 iframe 位于同一域中,因此没有问题。
我可以像这样直接调用父页面上的函数:window.parent.functionName
,但我想知道使用基于事件的解决方案是否可以实现这一点。
已解决
@cwolves 的回答效果很好:
parent.$('body').trigger( 'eventName' );
最佳答案
如果您在父框架中加载了 jQuery,请尝试:
parent.$('body').trigger( 'eventName' );
如果没有,请尝试这个,我不确定它是否会起作用,但我只是查看了 jQuery 源代码并认为它可能:
var pBody = $( parent.document.body );
pBody.trigger( 'eventName', pBody.data() );
(绑定(bind) eventName
时执行相同的操作)
据我所知,问题是 jQuery 正在使用本地页面中的数据,这会导致问题,因为它看起来像是试图从其他框架加载数据。换句话说,这是一团糟,但是 .bind
、.trigger
等中接受了 data
参数。
关于jquery - 从 iframe 触发 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697364/