我发现我可以做到以下几点:
if($('#notice', parent.frames['header'].document).length>0) { alert("It is here!"); }
检查另一帧中的项目。
有没有办法找出存在的框架?具体来说,我希望看看parent.frames ['header']。document是否存在。
有可靠的方法吗?
更新: 这是我的框架集代码:
<frameset rows="104,*,22" frameborder="NO" border="0" framespacing="0">
<frame src="header.php" id="header" name="header" scrolling="no" title="Header and Menu" noresize>
<frame src="main.php" title="Main content" name="main">
<frame src="footer.php" name="footer" title="Footer" scrolling="NO" noresize>
</frameset>
我正在努力确保我可以访问位于“标题”内部的div。 缺点是,在某些情况下,main会被另一个框架集替换。
答案 0 :(得分:3)
如果您想知道元素是否存在,您必须检查长度属性,请参阅jQuery FAQ:
if ($('#myFrame').length) {
alert('#myFrame exists');
}
在你的情况下,我认为你想:
if ($('frame[name=header]', parent).length) {
alert('frame exists');
}
为什么检查长度属性?
因为如果你将一个选择器传递给不匹配任何东西的jQuery,返回的结果是一个jQuery对象,不是一个假值(null,undefined,0或false),在if statement条件下被评估为bool,非''falsy'值总是被评估为true:
if ($('#nonExisting')) {
alert('always true');
}
// because
!!$('#nonExisting') == true; // and
!!'hello' == true;
!!0 == false;
我使用!!
作为将任何表达式转换为布尔等价的简单方法的示例,if语句在幕后做什么......
编辑:查看您的框架集标记,并假设您要检查主页面中是否存在标题框架,您可以通过以下方式轻松完成:
if (parent.header !== undefined) {
// frame exists
}
或者简单地说:
if (parent.header) {
// frame exists
}
检查此示例:
答案 1 :(得分:1)
检查选择器:
if ($("#myFrame").length) alert("It exists!");