运行JQuery的另一个框架
我一起工作的客户端的情况下具有像这样一个框架...运行JQuery的另一个框架
<frameset rows="100,*, 0">
<frame name="theFrame" id="theFrame" src="blah.html" >
<frame name="theSecondFrame" id="theSecondFrame" src="foo.html" >
<frame name="importantFrame" id="importantFrame" src="myFrame.html" >
</frameset>
当某个动作发生,我需要我的帧(这是目前隐藏importantframe)至大多接管页面并阻止与其他框架的交互。我正计划使用jquery block UI插件阻止交互。
问题是我实际上无法更改foo.html或blah.html文件。所以JS代码不能住在那里。 我需要做的是在这些帧的上下文中执行我的jQuery代码。所以我只想回顾一下,我需要我的JQuery代码来生活在myFrame.html中,但是在其他框架的上下文中执行。我怎样才能做到这一点?希望这是有道理的。
感谢 CDR
我不能确定该块插件,但你不能得到相关框架的保持和使用“框架树”操纵它,是这样的:(从内importantFrame热媒)
parent.theFrame.someProperty = someValue;
如:
parent.theFrame.location.href='anotherPage.html';
从我一直在读什么,你可能需要jQuery的目标页面上,但你可以尝试SOMET兴象:
parent.theFrame.block();
或可能:
$('#theFrame').block();
的jQuery
功能,你更通常与$
打电话,采取所谓的上下文中的第二个参数,这是“jQuery对象的哪些DOM元素应该我在“中进行搜索。大多数时候你忽略了这个参数,所以上下文默认为当前的HTML文档。当您的代码在iframe中执行时,文档默认为iframe的文档。但是您可以轻松获取其他框架之一的文档。
例如,将其放在myFrame.html
中,这将从其中的blah.html
中删除框架中的所有h1元素。注意第二个参数$
,这是从内部重要帧抓住嗒嗒帧中的表达:
<html>
<head>
<script type="text/javascript" src="/javascripts/jquery.js"></script>
<script type="text/javascript">
function doIt() {
$('h1', window.parent.frames[0].document).remove()
}
</script>
</head>
<body>
<h1>My Frame</h1>
<a href="#" onclick="doIt()">Do It</a>
</body>
</html>
像pjb3说,设置了jQuery上下文。如果你有嵌套的框架,你的代码看起来就像这样:
$('*',window.parent.frames[0].frames[0].document).size();
或者,更好的是,建立一个快捷方式:
targetFrame = window.parent.frames[0].frames[0].document;
$('*',targetFrame).size();
在jQuery中的版本> = 1.7,我们不能让事件老路
旧版本(< 1.7):
var events = $('#form').data('events');
1.7和更新的:
var events = $.fn.data($('#form'), 'events');
好的答案 - 我正要问一个类似的问题! – CMPalmer 2009-04-03 22:28:41