1

假设我有这个页面“index.php”,其中我有这个链接调用一个弹出框:

<a href="#" id="signinlink">Sign in</a>

jquery函数是:

<script type="text/javascript" charset="utf-8">
    jQuery(function() {
        function launch() {
             jQuery('#sign_up').lightbox_me({centered: true, onLoad: function() { jQuery('#sign_up').find('input:first').focus()}});
        }
        jQuery('#signinlink').click(function(e) {
            jQuery("#sign_up").lightbox_me({centered: true, onLoad: function() {
                jQuery("#sign_up").find("input:first").focus();
            }
        });
    });
</script>

如何从 iframe 调用这个函数?

(* iframe 是从父页面“index.php”调用的)我想我必须添加一个链接

window.parent.callme();

但是怎么做?请帮忙!

4

2 回答 2

1

首先 - 如果 iframe 与登录表单有关 - 它应该自己发送自己的内容。代码应该在那里,而不是在父框架中被调用。

无论如何,您的问题缺少有关您到底想要做什么的一些细节。

要从父母那里访问东西,您可以:

window.parent.functionname()而不仅仅是functionname()

所以

$(document).find(...)会成为window.parent.$(window.parent.document).find(...)

要从父级访问 iframe,您需要获取 iframe DOM 节点的 contentDocument。

这也很有帮助:如何使用 jQuery 公开 IFrame 的 DOM?

如果您可以使您的问题更清楚,则可以向您展示一个适用于您所拥有的代码的示例。

于 2013-02-16T22:28:32.390 回答
0

这对我有用 - 但只有当我将 jQuery 设置为 1.8 或添加jQuery 迁移时,因为 lightbox-me 需要在 1.8 中弃用并在 1.9 浏览器检测代码中删除

演示

在 iframe 中(假设 iFrame 中没有 jQuery):

<a id="parentsignin" href="#">Signup</a>

使用

window.onload=function() {
  document.getElementById("parentsignin").onclick=function() {
    parent.document.getElementById('signinlink').click();
    return false;
  }
}

实际上,您可能想在 parent 中执行此操作 - 请注意我使用 preventDefault 取消链接本身并重用代码:

function launch() {
  $('#sign_up').lightbox_me({ 
    centered: true, 
    onLoad: function() { 
      $('#sign_up').find('input:first').focus();
    }
  });
}


$(function() {
  $('#signinlink').click(function(e) {
    e.preventDefault(); // stop the link from being followed
    launch(); 
  });
});
于 2013-02-17T07:46:58.563 回答