来自iframe内容的jquery访问iframe id

sde*_*ser 4 iframe jquery selector

我想用jquery做点什么.

我有这样的代码1.html;

<html>
<head>
<script language="javascript" type="text/javascript" src="jquery.js"></script>
</head>
<body>
<iframe src="2.html" id="frame1"></iframe>
<iframe src="3.html" id="frame2"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在2.html文件中.我正在尝试访问iframe容器ID.2.html文件内容;

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function (){
    $('#btnIdKim').click(function (){
    }); 

});
</script>
</head>
<body>
<input type="button" name="btnIdKim" id="btnIdKim" value="Id Kim" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当用户点击btnIdKim按钮时.我需要访问包含按钮的父iframe ID.

但我不知道怎么做.

感谢所有感兴趣的人.

bob*_*nce 8

有一个HTML5(原IE扩展)属性frameElementwindow:

alert(frameElement.id);
Run Code Online (Sandbox Code Playgroud)

但这并不是全球支持的; 你不会在谷歌浏览器(写作时;版本7)或旧版本的其他流行的非IE浏览器中获得它.

没有此扩展,您必须手动执行此操作.转到父窗口,搜索其所有iframe以查看其中包含的文档是否是您自己的文档:

function getFrameElement() {
    var iframes= parent.document.getElementsByTagName('iframe');
    for (var i= iframes.length; i-->0;) {
        var iframe= iframes[i];
        try {
            var idoc= 'contentDocument' in iframe? iframe.contentDocument : iframe.contentWindow.document;
        } catch (e) {
            continue;
        }
        if (idoc===document)
            return iframe;
    }
    return null;
}

alert(getFrameElement().id);
Run Code Online (Sandbox Code Playgroud)

(contentDocument解决方法是必要的,因为IE <8不支持它; try...catch需要避免安全异常在遇到来自不同域的帧时停止循环.)