如何将事件绑定到本地iframe中的元素?

时间:2010-10-14 14:56:37

标签: javascript jquery iframe

首先,父页面和iframe都托管在同一台服务器上(我在WAMP上的localhost),所以这里的原始策略不应该是一个问题。

我无法触发工作。我的iframe的ID为iframe

$(window).load(function(){
  //iframe ad hovers
  $('#iframe').contents().find('body div').click(function(){
    alert('do something here');
  });
}); 

我做错了什么?

2 个答案:

答案 0 :(得分:7)

我不确定浏览器是否会将{click}事件从<iframe>的窗口上下文传播到包含窗口。加载到<iframe>的文档是否有自己的jQuery副本?如果是这样,你可以试试这个:

$('#iframe').contents().$.find('body div').click(function(){
  alert('do something here);
});

该更改使<iframe>窗口中的jQuery代码处理事件。

我认为@jAndy是正确的,应该按原样工作 - 你必须确保框架中的文档已加载。试试这个:

$('#iframe').load(function() {
  $(this).contents().find('body div').click(function() { alert("hi"); });
});

答案 1 :(得分:0)

你的代码没错;我认为你唯一的错误就是你要求在父页面加载iframe的内容,这意味着在这个阶段iframe尚未加载。

试试我的简单示例http://jsfiddle.net/UFM44/4/ 它与您的代码相同,但在点击“now”链接后触发它。如果您再点击徽标,则可以看到alert()消息。