我遇到iframe问题。问题是我有一个主页面和菜单,用iframe加载内容。在主页面上我还有一个div“MessageBox”在一个iframe中我在“MessageBox”中显示变量的内容,所以我在MAIN页面上有一个全屏消息。
iframe中的示例我有生成此按钮的按钮:
content="<input type='button' value='OK' class='Ok' id='Ok'/>";
MessageBox("Click OK", content, "child", "400", "170");
在iFrame中我有jquery函数:
$(".Ok",window.parent.document).live("click",function(){
alert("OK");
});
,一切都行,只有当我第一次进入这个iframe时才会这样。我看到警报(“确定”)和它的酷,但是当我从菜单中再次点击其他iframe时,我再次看到警报(“确定”)两次,当我再次点击其他iframe并返回此iframe时,我看到3次警报( “OK”)。
有人可以帮我解决这个问题吗?是否有任何iframe缓存或类似的东西?我认为,每次打开我的iframe时,它都存储在内存中,为什么我有很多calsses“.Ok”,当我点击“确定”按钮时,自由点击方法会执行多次,就像我在内存中存储了iframe一样?
请帮助:)
答案 0 :(得分:1)
问题是,每次从菜单中添加另一个iframe
时,您都会为具有'.Ok'
类的每个元素注册新的单击处理程序,因此对于您已加载的每个iframe元素也是如此。< / p>
修改:要仅为iframe使用中的.Ok
元素注册点击次数:
$('.Ok').live('click', function() {...});
没有父窗口的范围。
BTW:$('...').live(...)
已被弃用。使用.on()附加事件处理程序。