1

我有 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 时。我看到 alert("OK") 很酷,但是当我从菜单中单击其他 iframe 并再次单击此 iframe 时,我看到 alert("OK") 两次,当我再次单击其他 iframe 并返回此 iframe 时,我看到 3 次警报(“确定”)。

有人可以帮我解决这个问题吗?是否有任何 iframe 缓存或类似的东西?我认为每次打开 iframe 时它都会存储在内存中,这就是为什么我有很多 calsses “.Ok”,当我单击“OK”按钮时,libe click 方法的执行次数与我在内存中存储 iframe 的次数一样多?

请帮忙 :)

4

1 回答 1

1

问题是,每次您iframe从菜单添加另一个时,您都在为每个具有类的元素注册新的点击处理程序,'.Ok'对于您已经加载的每个 iframe 元素也是如此。

编辑:要为.Okiframe 中的元素注册点击,请使用: $('.Ok').live('click', function() {...}); 没有父窗口的范围。顺便说一句:$('...').live(...)已弃用。使用 .on() 附加事件处理程序。

于 2013-10-08T13:28:12.960 回答