避免在Jquery中从iFrame内部绑定到父级时重复绑定
我有一个棘手的情况-任何帮助将不胜感激 我有一个父页面,在iframe中有一个子页面。以下是html示例: 对于父页面:避免在Jquery中从iFrame内部绑定到父级时重复绑定,jquery,Jquery,我有一个棘手的情况-任何帮助将不胜感激 我有一个父页面,在iframe中有一个子页面。以下是html示例: 对于父页面: <html> <body> <a id="banana">Banana</a> <iframe src="ChildPage.html" /> </body> </html> 这是因为当我们提交iframe时,clickHandler被视为一
<html>
<body>
<a id="banana">Banana</a>
<iframe src="ChildPage.html" />
</body>
</html>
这是因为当我们提交iframe时,clickHandler被视为一个新对象,与以前的clickHandler不同
有趣的是,名称空间也不起作用-名称空间上下文似乎位于创建名称空间的窗口内,而不是绑定到它所绑定的元素
// This still doesn't work either
$('#banana', top.document)
.unbind('click.myns')
.bind('click.myns', function() {
alert('hello world');
});
您可以向试图将事件绑定到的元素添加属性,然后在事件绑定上检查该属性
$("#banana:not(.initialized)", top.document).bind();
我通常在处理动态创建的内容时这样做,比如modals和iframe,以保存状态,并避免可怕的双重绑定混乱。我最终不得不使用attr()。我本来希望使用data(),但这也没用——我想是因为,根据jquery文档,当用户“离开页面”时,使用data()的数据集会被清除。
// This still doesn't work either
$('#banana', top.document)
.unbind('click.myns')
.bind('click.myns', function() {
alert('hello world');
});
$("#banana:not(.initialized)", top.document).bind();