jQuery:在iframe中工作而无需重新链接

时间:2011-05-11 05:43:22

标签: jquery iframe

也许标题有点误导,问题也可能存在,但我很好奇,如何使用jQuery从内部(相同的主机/域)iframe而不重新链接到jQuery的源代码iframe加载了HTML。

好吧,我可以使用parent.jQuery();访问它,但每当我尝试使用它操作元素时,它都在parent帧中工作,而不是当前的活动元素。

iframe是使用ColorBox v.1.3.16生成的。

这是我到目前为止所尝试过的,根本没有运气..(这来自iframe内部):

jQuery = parent.jQuery;
jQuery(document).ready(function(){
    jQuery('#time-bar .slider', document).css({ 'background-color' : 'blue', 'left' : '-99%' });
});

我在这里使用document作为父选择器,但它不起作用,我不知道应该在那里使用什么。

提前致谢!

编辑:

来自T.J.克劳德:

parent.jQuery(function($) {
    var element = $("#time-bar", document);
    console.log(element);
});

console.log()返回一个空对象,或者实际上,不知道它是否可以被称为对象:[]

2 个答案:

答案 0 :(得分:2)

除了其他因素外,您的代码会在document传递到jQuery()$())函数作为上下文文档。

示例:

HTML:

<script src="blah/blah/jquery.min.js"></script>
<iframe id='theframe' src='http://jsbin.com/ulehi4'>

iFrame HTML:

<input type='button' id='theButton' value='Click Me'>

iFrame JavaScript:

parent.jQuery(function($) {
  $("#theButton", document).click(function() {
    $("<p>Button clicked!</p>").appendTo(document.body);
  });
});

Live example

尽管如此,如果你在父节点和框架中使用与jQuery文件完全相同的链接(可能来自其中的一个CDN),那么开销确实很小。如果您无法控制标记,则可以在iframe中插入script元素。

答案 1 :(得分:1)

如果我正确理解了这个问题 - 请参阅: jQuery/JavaScript: accessing contents of an iframe

更重要的是从那里:

$().ready(function () {
    $("#iframeID").ready(function () { //The function below executes once the iframe has finished loading
        $('some selector', frames['nameOfMyIframe'].document).doStuff();
    });
};