仅在父窗口中包含jQuery库

时间:2013-10-27 16:33:31

标签: javascript jquery

当它仅包含在父窗口中时,是否可以从iframe访问jQuery lib?我有一个父窗口加载(有时数百)iframe。在每个iframe中,我想执行一些jQuery函数。如果我使用:

在每个iframe中定义lib,我只能使用它
<script src="/jquery.min.js" type="text/javascript"></script>

但是,我希望,为了加快加载速度,我只在父窗口中包含上面的脚本标记,然后从每个子/ iframe访问父文件库以执行影响iframe的函数。

感谢您的回复。这是我在子框架中的内容:

&lt;script>
var $ = parent.jQuery;

$(this, document).ready(function(){
    var step = 0.2;
    $('body', document).css('MozTransform','scale(0.2)');
});

&lt;/script>

而我所期待的是,一旦孩子的医生“准备好”,它就会缩减到20%。除了不工作。是否可能,或者我应该尝试将子代码添加到父文档并为每个框架分配ID,然后循环遍历它们。

使用     $(document).ready(function(){         $( '主体')。CSS( 'MozTransform', '比例('

导致父窗口缩小。我想缩小iframe。

2 个答案:

答案 0 :(得分:1)

假设iframe与父文档位于同一个域中,您可以轻松获得对父窗口jQuery的引用:

var $ = parent.jQuery;

或者,如果iframe嵌套了多个级别的深度:

var $ = top.jQuery;

但是,默认情况下,jQuery只会查询文档所在的位置。如果您需要查询给定的iframe的DOM,您有两个选择:

通过document,在这种情况下指向给定的iframe的{​​{1}},context

window.document

或者,存储一个包含$('#elementInsideIframe', document).doSomething(); 文档和iframe后代的jQuery对象。

.find()

现场演示


尽管其他人说,缓存对你的用例来说并不“足够好”。 jQuery有很多初始化开销,而且你不想包含数百次。


根据OP更新:

只需在框架内使用var $dom = $(document); $dom.find('#elementInsideIframe').doSomething(); 即可。在(i)帧上下文中,$(document).ready()指向给定帧的document

此外,如果您使用的是jQuery&gt; = 1.8,则不需要使用供应商前缀 - 如果不支持标准的jQuery,jQuery将使用相应的vendor-prefixed属性。

演示:parentiframe

答案 1 :(得分:0)

使用父窗口或顶部窗口的html代码进行抖动的开销将比加载jquery的额外行脚本花费更多。

在每个框架中单独加载,可能使用jquery的在线版本,这将增加在加入库之前加载库的客户端的通道。

在示例中

<script src="http://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>