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

jQuery:在iframe中工作而不重新链接,jquery,iframe,Jquery,Iframe,也许标题有点误导,问题也可能是这样,但我很好奇,如果不在iframe加载的HTML中重新链接到jQuery的源代码,如何从内部(同一主机/域)iframe使用jQuery呢 我可以使用parent.jQuery()访问它,但每当我试图用它来操作元素时,它都会在父帧中工作,而不是当前的活动帧 Iframe是使用ColorBox v.1.3.16生成的 这是我到目前为止所做的尝试,一点运气都没有。。(这来自iframe内部): 我在这里使用了document作为父选择器,但它不起作用,我不知道应该在

也许标题有点误导,问题也可能是这样,但我很好奇,如果不在iframe加载的HTML中重新链接到jQuery的源代码,如何从内部(同一主机/域)
iframe
使用jQuery呢

我可以使用
parent.jQuery()访问它,但每当我试图用它来操作元素时,它都会在父帧中工作,而不是当前的活动帧

Iframe是使用
ColorBox v.1.3.16
生成的

这是我到目前为止所做的尝试,一点运气都没有。。(这来自iframe内部):

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

提前谢谢

编辑: 源自T.J.Crowder:

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

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

除非有其他因素,否则将
文档
作为上下文文档传入(
$()
)函数的代码应该可以工作

例如:

HTML:


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);
  });
});
parent.jQuery(函数($){
$(“#按钮”,文档)。单击(函数(){
$(“按钮已单击!

”).appendTo(document.body); }); });


尽管如此,如果在父级和帧中使用与jQuery文件完全相同的链接(可能来自它所在的CDN之一),那么开销确实很小。如果无法控制标记,则可以在iframe中插入
脚本
元素。

如果我正确理解了问题,请参见:

更重要的是:

$().ready(function () { $("#iframeID").ready(function () { //The function below executes once the iframe has finished loading $('some selector', frames['nameOfMyIframe'].document).doStuff(); }); }; $().ready(函数(){ $(“#iframeID”).ready(函数(){//iframe加载完成后,将执行下面的函数 $('some selector',frames['nameofmiFrame'].document.doStuff(); }); };
嗯,似乎不起作用。。有没有可能是由
colorbox
引起的错误?嗯,可能是我的错,但仍然与结果相混淆。无论如何,谢谢!接受了。@Tom:对不起,不太明白--你把问题解决了吗?从你的问题编辑中,似乎你没有,但你接受了这个答案,所以…:-)您在编辑中列出的结果(
[]
)表明iframe中没有带有
id
“时间条”的元素…@Tom:好吧,有时候人们会这样做(我不明白)。很高兴这有帮助!
parent.jQuery(function($) {
  $("#theButton", document).click(function() {
    $("<p>Button clicked!</p>").appendTo(document.body);
  });
});
$().ready(function () { $("#iframeID").ready(function () { //The function below executes once the iframe has finished loading $('some selector', frames['nameOfMyIframe'].document).doStuff(); }); };